# 快速构建字典序列dict=dict(zip('abcd',range(4)))# {'a':0,'c':2,'b':1,'d':3}# 类似三元运算符return'ok'if a ==1else'error'# 列表生成字典list=((1,'a'),(2,'b'))
dict1 ={ x[0]:x[1]for x inlist}
dict2 ={ x:y for x inrange(4)for y inrange(10,14)}
list=[1,[2,[3,4]]]# 传统方法,迭代+递归
res =[]deffun(s):for i in s:ifisinstance(i,list):
fun(i)else:
res.append(i)
fun(list)# 方法2 ,使用 lambda 表达式
flat =lambda L:sum(map(flat,L),[])ifisinstance(L,list)else[L]
res = flat(list)# 方法3,使用 lambda +迭代
flatten =lambda x:[y for i in x for y in flatten(i)]iftype(x)islistelse[x]
res = flatten(list)
带条件的推导列表
# 一个条件
a =[x/2for x inrange(10)if x%2==0]# range(10) 0-9# [0.0,1.0,2.0,3.0,4.0]# 多个条件
b =[x for x inrange(30)if x%2==0and x%6==0]# [0,6,12,18,24]# 用 if-else 语句
c =[x+1if x>=5else x*10for x inrange(10)]# [0,10,20,30,40,6,7,8,9,10]# 嵌套推导列表
list_list =[[1,2,3,4],[5,6],[7,8]]
d =[y for x in list_list for y in x]# 此函数必须让参数必须全部嵌套,如果[1,[2,3]]就会出错#[1,2,3,4,5,6,7,8]