python中的生成器跟迭代器

python的迭代器,只需要实现__iter__跟next()方法就成。

例如:

    def __iter__(self):
        return self

    def next(self):
        result = self.get()
        if result is StopIteration:
            raise result
        return result

当迭代到最后无值的时候,会抛出StopIteration异常,不过好些自己的实现函数会去预先处理,不抛此异常

例如:

it = iter(lst)
try:
    while True:
        val = it.next()
        print val
except StopIteration:
    pass

  

至于生成器,主要是用到关键字yield,基本上这就是个生成器,而且不能跟return搭配用。生成器中也可有next()方法,即它也有迭代器的功能

可参考

http://www.cnblogs.com/huxi/archive/2011/07/01/2095931.html

http://www.cnblogs.com/huxi/archive/2011/07/14/2106863.html

原文地址:https://www.cnblogs.com/liuyongjians/p/3408249.html