生成器表达式是在python2.4中引入的,当序列过长, 而每次只需要获取一个元素时,应当考虑使用生成器表达式而不是列表解析。生成器表达式的语法和列表解析一样,只不过生成器表达式是被()括起来的,而不是[],如下:
(expr for iter_var in iterable)
(expr for iter_var in iterable if cond_expr)
(expr for iter_var in iterable if cond_expr)
例:
>>> L= (i +1 for i in range(10) if i %2) #L返回的是一个生成器,可以用for-in迭代每个值
>>> L
<generator object <genexpr> at 0xb749a52c>
>>> L1=[]
>>>for i in L:
... L1.append(i)
...
>>> L1
[2, 4, 6, 8, 10]
>>> L
<generator object <genexpr> at 0xb749a52c>
>>> L1=[]
>>>for i in L:
... L1.append(i)
...
>>> L1
[2, 4, 6, 8, 10]