v = ( out_exp_res for out_exp1 in sequence1 if condition1
for out_exp2 in sequence2 if condition2
...... )
variable = [(out_exp_res) for out_exp in input_list if out_exp == 2]参数:
# out_exp_res:如列表生成元素表达式(可以是有返回值的函数)
# for out_exp in input_list: 迭代input_list将out_exp传入out_exp_res表达式中。
# if out_exp == 2: 条件表达式
# 如果生成器出现在一个函数中,则允许使用子句和表达式geners = (i for i in range(10) if i % 3 is 0)#type 'generator'
for i in geners: print i # 0 3 6 9
2.2.[]列表推导式
def add(x, y):
return x + ya = [{x: add(y,1000)} for x in range(10)
for y in range(100) if x % 5 == 0 and y % 50 == 0]
# [{0:1000},{0:1050},{5:1000}, {5: 1050}]
2.3.{:}字典推导式
d = {'a': 1, 'b': 2, 'C': 3}
d2 = {k.lower(): d.get(k.lower(), 0) + d.get(k.upper(), 0)
for k in d1.keys() if k.lower() in ['a', 'b']} # 可以多行书写# 快速更换key和value
d2 = {v: k for k, v in d.items()}
2.4.{ ,}集合推导式
s = {x for x in [1, 1, 2]}
3.实例
#创建一个将被立即传递给函数的迭代器:
obj_total = sum(obj.count for obj in list_all_objects())
#循环次数:
seq1 = 'abc';seq2 = (1,2,3)
[(x, y) for x in seq1 for y in seq2]