1.不必创建完整的list,从而节省大量的空间。在Python中,一边循环一边计算的机制,称为生成器:generator。
2.要创建一个generator,有很多种方法。第一种方法很简单,只要把一个列表生成式的[]改成(),就创建了一个generator:
>>> L = [x * x for x in range(10)]
>>> L
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
>>> g = (x * x for x in range(10))
>>> g
<generator object <genexpr> at 0x1022ef630>
3.不断调用next(g)实在是太变态了,正确的方法是使用for循环,因为生成器generator也是可迭代对象。
4.定义generator的另一种方法。如果一个函数定义中包含yield关键字,那么这个函数就不再是一个普通函数,而是一个generator。