# zip函数,将多个值变成一个多个元祖,好似打包一样 print(list(zip([1,2,3],[3,2,1],[0,0,0]))) #结果:[(1, 3, 0), (2, 2, 0), (3, 1, 0)] #enmuit 枚举,start默认是0,也可以指定,这样就是从5开始,10个数字 print(list(enumerate(range(10),start=5))) # 结果:[(5, 0), (6, 1), (7, 2), (8, 3), (9, 4), (10, 5), (11, 6), (12, 7), (13, 8), (14, 9)] #列表推导式,推导式内部套推导式,第一个取出2-100的整数,第二个对2-100的整数进行做除法 #1、求100以内的素数(只能被1和自身整除的数,1除外) ln = [n for n in range(2,101) if 0 not in [n%p for p in range(2, n)]] print(ln) # 结果:[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97] #2、平铺:双层for循环,第一次取出[1,2,3]...,第二次取出具体的值 lnl=[[1,2,3],[4,5,6],[7,8,9]] lnln=[n for elem in lnl for n in elem ] print(lnln) # 结果:[1, 2, 3, 4, 5, 6, 7, 8, 9] #3、矩阵转置 lnl=[[1,2,3],[4,5,6],[7,8,9]] # 方法1列表推导式 lnlnl = [[n[i] for n in lnl] for i in range(3)] print(lnlnl)# [[1, 4, 7], [2, 5, 8], [3, 6, 9]] # 方法2,zip函数 zipln=list(map(list,zip(*lnl))) print(zipln) #结果:[[1, 4, 7], [2, 5, 8], [3, 6, 9]] #4、 计算10以内各种除自身的组合 zh=[(x,y) for x in range(1,11) for y in range(1,11) if x!=y] print(zh) #[(1, 2), (1, 3), (1, 4), (1, 5), (1, 6), (1, 7), (1, 8), (1, 9), (1, 10), (2, 1), (2, 3), (2, 4), (2, 5), (2, 6), (2, 7), (2, 8), (2, 9), (2, 10), (3, 1), (3, 2), (3, 4), (3, 5), (3, 6), (3, 7), (3, 8), (3, 9), (3, 10), (4, 1), (4, 2), (4, 3), (4, 5), (4, 6), (4, 7), (4, 8), (4, 9), (4, 10), (5, 1), (5, 2), (5, 3), (5, 4), (5, 6), (5, 7), (5, 8), (5, 9), (5, 10), (6, 1), (6, 2), (6, 3), (6, 4), (6, 5), (6, 7), (6, 8), (6, 9), (6, 10), (7, 1), (7, 2), (7, 3), (7, 4), (7, 5), (7, 6), (7, 8), (7, 9), (7, 10), (8, 1), (8, 2), (8, 3), (8, 4), (8, 5), (8, 6), (8, 7), (8, 9), (8, 10), (9, 1), (9, 2), (9, 3), (9, 4), (9, 5), (9, 6), (9, 7), (9, 8), (9, 10), (10, 1), (10, 2), (10, 3), (10, 4), (10, 5), (10, 6), (10, 7), (10, 8), (10, 9)]
# map函数的用法1:类型转换 print(list(map(str,[1,2,3]))) #['1', '2', '3'] int转str # map函数的用法2:方法传参 def add(x): return x+5 print(list(map(add,range(3)))) #[5, 6, 7] def add_(x,y): return x+y print(list(map(add_,range(0,3),range(0,3)))) #[0, 2, 4] # reduce函数,累加 from functools import reduce print(reduce(add_,range(5)))#10 #filter函数,过滤 x=[1,0,2,-1] def filter_x(x): return x>0 print(list(filter(filter_x,x))) #[1, 2] # 元祖推导式(惰性原则),一次 yz=(x for x in range(1,11)) print(list(yz)) # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] print(list(yz)) #[] # 元祖的next方法,每次取一个 yz1=(x for x in range(1,11)) print(yz1.__next__()) #1 #yeild:普通函数使用return返回一个数据,生成器使用yield产生一系列数据 def counter(start=0): while True: yield start start+=1 b=counter() print ('first:',b.__next__()) # first: 0 print ('second:',b.__next__()) # second: 1
# 字典推导式,跟列表推导式类似,只不过换成{}而已