1.迭代器:
a.迭代协议: 实现了__iter__()方法,且该方法返回一个实现了
__next__()
方法的对象。 (严格来说迭代器只需要实现__iter__方法,不需要实现__next__方法。)
b.常见的迭代器是如下:即该类本身就是可以迭代的。
class xxx def __iter__(): return self def __next__(): ...
c.也可以通过__iter__实现代理迭代,这个时候是不需要__next__方法的。
#更加一般的迭代形式 class xxx def __iter__(): return iter(某个实现了__next__的迭代对象或者是一个生成器)
d.生成器:使用yield的函数,在系统内部被转变成为一个迭代器。生成器很简单明了。迭代器可以包含更多的数据,甚至可以将迭代过程数据给记录下来。因此迭代器具备普遍性,具备更多的功能。
e.反向迭代:实现了__reversed__函数的类。
f.迭代工具函数:
iter, #返回迭代对象 iter(迭代器,末尾值) next, #返回下个迭代对象 next(迭代器) enumerate,#重新构建一个迭代器,返回迭代对象与索引 zip,#重新构建一个迭代器,将多个迭代器组合成为一个新的迭代器,返回多个迭代器的值形成的tuple islice:#给迭代器切片 dropwhile:#丢弃迭代器不需要的数据 permutations:#一个迭代器返回排列 combinations #一个迭代器返回组合 yield from #展开迭代器,跟iter()一样
原文:http://www.cnblogs.com/yasmi/p/5017126.html