列表推导式
简单
[i for i in range(10)]
中级
[i for i in range(10) if i%2==0]
# 只添加偶数
高级
[(i,j,i*j) for i in range(20) for j in range(20) if i%2==0 if j%2==0]
# 前面是结果,也是最后执行的地方
# 中间是生成条件,第一步就执行,但是有两个for遍历,可以把两个for循环看成嵌套遍历,后面这个for相当于内层的
#后面的是筛选条件,第二部执行,若有多个条件的话必须同时满足多个
生成式和lambda连用
a = [lambda x, i=i:x * i for i in range(10)]
for i in a:
print(i(2))
# 生成式和lambda连用,列表里面装的全是lambda函数,i引用的只是一个地址,当最后一个i值生成的时候
# 前面所有的i值都变成了此i值,解决办法就是在lambda函数中加入i=i储存前面生成的i值