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,一个接着一个。

 


posted on 2016-08-24 15:58  妞溜溜  阅读(53)  评论(0)    收藏  举报