列表解析式:
[expr for iter_var in iterable]
[expr for iter_var in iterable if cond_expr]
例如:
[i*10 for i in range(10)]
结果:
[0,10,20,30,40,50,60,70,80,90]
[i*10 for i in range(10) if i<5]
结果:
[0,10,20,30,40]
生成器(generator)表达式:
(expr for iter_var in iterable)
(expr for iter_var in iterable if code_expr)
例如:
>>>g=(i for i in range(1,10) if i%3==0 or i%5==0)
>>>g
<generator object <genexpr> at 0x000001812ABBE410>
>>>for i in g:
print(i)
结果:
3
5
6
9
生成器表达式并不真正创建数字列表,而是返回一个生成器,这个生成器在每次计算出一个条目后,把这个条目“产生”出来。生成器表达式使用了“惰性计算”,有在检索使用时才被赋值,所以在pythonercn列表比较长的情况下,使用内存更有效。