參考:https://www.zhihu.com/question/24807364
生成器函數:
a,b = 0,1
yield b
for x in range(n):
a,b = b,a+b
yield b
生成器表達式:
a = (x for x in range(10)),和列表表達式區別,生成器表達式按需求產生結果的一個對象,而不是一次構建一個結果列表。next(a)
for x in a:
print(x)
或不停的執行next(a)
總結:生成器表達式是對內存空間的優化,他们不需要像方括号的列表解析一样,一次构造出整个结果列表。他们运行起来比列表解析式可能稍慢一些,因此他们对于非常大的结果集合运算是最优的选择。