二者都是生成一个缓存列表,生成器(generators)更像一个加强型的迭代器(iterators).二者都使用next()来取得数据;
迭代器: (使用iter()方法)
a = 'abc';
it = iter(a);print it.next()
For就是一个经典的迭代器用法.
for i in a:print i (for就是当出现stopIteration错误时知道退出循环)
生成器:(使用yield关键字)
生成器使用关键字yield来推出数据;生成器同时还拥有send(val)来修改值及close()来关闭生成器;
例:斐波拉切数列:
def fib(): a,b = 0,1 while True: yield b a,b = b,a+b f = fib() print [f.next() for i in range(100)]