http://blog.csdn.net/alvine008/article/details/43410079
Generators
Generators(生成器)也是可迭代的,但是你每次只能迭代它们一次,因为不是所有的迭代器都被一直存储在内存中的,他们临时产生这些值:
>>> mygenerator = (x*x for x in range(3))
>>> for i in mygenerator:
... print(i)
0
1
4
>>> for i in mygenerator:
... print(i) # 无输出
>>> mygenerator = (x*x for x in range(3))
>>> mygenerator.next()
0
>>> mygenerator.next()
1
>>> mygenerator.next()
4
>>> mygenerator.next()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration
生成器几乎和迭代器是相同的,除了符号[]变为()。但是你无法用两次,因为他们只生成一次:他们生成0然后丢弃,继续统计1,接着是4,一个接着一个。
浙公网安备 33010602011771号