Python 生成器与迭代器

迭代器是一种可以重复做某种事情的对象,python中实现了__iter__方法的对象都是可迭代的,实现了next()方法的对象是迭代器。

简单地说,实现了__iter__和next是迭代器的基本两个函数,所有的迭代器都应该具备这两个方法。

如下为一个迭代器

class Fib:
    def __init__(self):
        self.a,self.b = 0,1
    def next(self):
        self.a,self.b = self.b,self.a+self.b
        return self.a
    def __iter__(self):
        return self
fibs = Fib()
for i in fibs:
  if i < 1000:
    print i

生成器则是一个函数,他是由yield语句来触发的,程序运行完yield语句时会停止,并保存状态(像一个中断处理),返回一个值,等待下一次激活。

def fib():
    a,b = 0,1
    while 1:
        a,b = b,a+b
        yield a
for f in fib():
    if f < 1000:
        print f
    else:
        break

这个例子与上一个完成同样的效果。

生成器与迭代器都是可以迭代,并且带向迭代。

posted @ 2013-09-19 23:34  EthanChou  阅读(403)  评论(0编辑  收藏  举报