每日小练习,不定期更新
- 实现删除一个list 里面的重复元素(set 和 for 实现)
s1 = [1,1,2,2,2,3]
(1)set(s1)
(2)s1_new=[]
for i in s1:
if i not in s1_new:
s1_new.append(i)
print(s1_new)
2.利用切片操作,实现一个函数,去除字符串首尾的空格,不允许使用strip()函数
def trim(s):
if s[:1]!= ' ' and s[-1]!=' ':
return s
elif s[:1] == ' ':
return trim(s[1:])
else:
return trim(s[:-1])
3.猴子吃桃问题
猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上
又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零 一个。到第10天早上想吃时,只剩下一个桃子了。求第一天共摘多少个桃子。
sums = 1
print('10 1')
for i in range(9,0,-1):
sums = (sums+1)*2
print('{:^2} {:>2}'.format(i,sums))
4.杨辉三角实现
triangle=[]
n=3
for i in range(n):
cue=[1]
triangle.append(cue)
if i==0:
continue
pre = triangle[i-1]
for j in range(i-1):
cue.append(pre[j]+pre[j+1])
cue.append(1)
print(triangle)
5.随机产生10个数字,每个数字取值范围[1,20],统计重复和不重复的数字
方法一、二:
import random
s1=[random.randint(1,20) for i in range(10)]
length=len(s1)
print(s1)
num_dic={}
for i in s1:
# if i not in num_dic:
# num_dic[i]=1
# else:
# num_dic[i]+=1
num_dic[i]=num_dic.get(i,0)+1
num_dict = list(num_dic.items())
print(num_dict)
6.求100内的素数,可扩展到10W
#效率较高的求100内的素数
方法一:
n = 100
print(2)
for i in range(3,n,2):#奇数求
if i>10 and i%5==0:
continue
for j in range(3,int(i**0.5)+1):#利用中间数, #整除是向下,无论多少都会取整数部分,例如3.9取3,所以会丢数字,需要加上1
if i%j==0:
break
else:
print(i)
方法二:使用素数列表
n=10
primenumber=[2]
for i in range(3,n,2):
flag = False #设置标志位
edg = int(i**0.5) #中间位
# if i==0:
# continue
for j in primenumber:
if j > edg:
flag=True
break
if i%j==0:
break
if flag:
primenumber.append(i)
print(primenumber)
7、从lst = [1,(2,3,4),5]中,提取4出来.利用解构的方式
8、环境变量JAVA_HOME=/usr/bin,返回环境变量名和路径
7、lst = [1,(2,3,4),5]
a,(b,c,d),e = lst
print(a,b,c,d,e)
8、lst='JAVA_HOME=/usr/bin'.partition('=') #partition 以什么分割
a,_,c=lst
print(a,c)
set 集合运算
#你的好友A、B、C,他的好友C、B、D,求共同好友
s1 = set('a,b,c')
s2 = set(['c','b','d'])
s1 & s2
随机产生2组各10个数字的列表,如下要求:
每个数字取值范围[10,20]
统计20个数字中,一共有多少个不同的数字?
2组之间进行比较,不同的数字有几个?分别是什么?
2组之间进行比较,相同的数字有几个?分别是什么?
import random
a = [random.randint(10,20) for i in range(10)]
b = [random.randint(10,20) for i in range(10)]
a=set(a)
b=set(b)
print(a)
print(b)
print(a^b)#对称差集 由所有不属于A和B的交集元素组成的集合
print(a&b)#交集
- key并不是按照加入的顺序排列,可以使用OrderedDict记录顺序
from collections import OrderedDict
import random
d = {'banana':3,'apple':4,'pera':1,'orange':2}
print(d)
keys = list(d.keys())
random.shuffle(keys)
print(keys)
od = OrderedDict()
for key in keys:
od[key]=d[key]
print(od)
print(od.keys())
- 计算时间:
import datetime
import time
start = datetime.datetime.now()
time.sleep(2)
duration = (datetime.datetime.now() - start).total_seconds()
print(duration)
[返回值 for 元素 in 可迭代对象 if 条件]
例子: 生成一个列表,元素0~9,对每一个元素自增1后求平方返回新列表
[(i+1)**2 for i in range(10) ]
20以内,既能被2整除又能被3整除的数
[ i for i in range(20) if i%2==0 and i%3==0]
有一个列表lst = [1,4,9,16,2,5,10,15],生成一个新列表,要求新列表元素是lst相邻2项的和
lst = [1,4,9,16,2,5,10,15]
[lst[i]+lst[i+1] for i in range(len(lst)-1)]
“0001.abadicddws” 是ID格式,要求ID格式是以点号分割,左边是4位从1开始的整数,右边是
10位随机小写英文字母。请依次生成前100个ID的列表
import random
import string
lower = string.ascii_lowercase
num = ['{:04}.{}'.format(i,''.join([random.choice(lower) for i in range(10)])) for i in range(1,5)]
print(num)
请生成6个ID字符串,格式为 随机3个小写字母 . 随机4个大写字母 . 随机5个数字字符
azy.YBSR.02900
lux.OBRS.00270
yez.IGEV.29062
import random
import string
lower = string.ascii_lowercase
upper = string.ascii_uppercase
dignumber = string.digits
num = ['{}.{}.{}'.format(''.join(random.choice(lower) for i in range(3)),
''.join(random.choice(upper) for j in range(4)),
''.join(random.choice(dignumber) for i in range(5))
) for i in range(6)]
print(num)
转置矩阵
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
nums = [i for i in zip(*matrix)]
print(nums)
----
l = ['a', 'b', 'c', 'd', 'e', 'f']
num = (zip(l[:-1], l[1:]))
print([i for i in num])
完成一个函数,可以接收输入的多个数,每一次都能返回到目前为止的最大值、最小值
def dip():
max_ = min_ = None
while True:
a = input('>>>')
num = [int(c) for c in a.replace(',',' ').split()]
if not num:
continue
if max_ is None:
max_= min_= num[0]
max_ = max(max_,*num)
min_ = min(min_,*num)
print(max_,min_)
dip()
自建内建函数sort,并实现反转
def sort(iterable,reverse = False):
new_list=[]
for x in iterable:
for i,y in enumerate(new_list):
order = x>y if reverse else x<y
if order:
new_list.insert(i,x)
break
else:
new_list.append(x)
return new_list
#将下面的时间,转化为标准时间输出
s1 = "2010 Jan 1"
s2 = '31-1-2000'
s3 = 'October10, 1996, 10:40pm'
from dateutil.parser import parse
print(parse(s1))
print(parse(s2))
print(parse(s3))