生成器与迭代器
迭代器(Iterator)
- 定义:定义了__iter__和next方法的对象,其中要求__iter__方法返回对象自身。这就是python内部所遵循的迭代协议。
另一个相近的概念即可迭代对象(Iterable:返回一个迭代器的对象),其和容器一样都只是一个抽象的概念,不属于具体的数据结构。
- 可以从collections模块中导入Iterator和Iterable来判断一个对象是否属于迭代器和可迭代对象。
- 可以利用iter内置函数将一个可迭代对象转换为迭代器
生成器(generator)
- 生成器是一种特殊的迭代器,其每一次迭代的值都是有生成器函数得到的。生成器会记录每一次迭代进入和退出的状态。
- 特点:
- 节省空间
- 只能迭代一次
- 定义方式:
- 生成器表达式(例如:( i for i in range(10)))
- 生成器函数(yield)
- 生成器每次迭代的值由yield返回,结束时抛出StopIteration异常,并可以通过return返回异常信息
- 由于生成器会记录每一迭代进入和退出的状态,结合send方法就可以实现并发计算
详细参考:
http://www.cnblogs.com/wilber2013/p/4652531.html http://foofish.net/blog/109/iterators-vs-generators https://www.ibm.com/developerworks/cn/linux/sdk/python/charm-20/
浙公网安备 33010602011771号