Python 迭代器

来源:互联网 发布:python交易策略 编辑:程序博客网 时间:2024/05/22 02:02

对于初次接触迭代器这个名字的人来说,确实是比较难理解的事。本篇博客就来简单地说说迭代器。
相信每个用过python的人都用过下面两句中至少其中一个:

for i in range(n):    passorfor i in xrange(n):    pass

上面中xrange()就是一个迭代器,range(n)会立即生成一个List(List本身是可迭代的),相当于for i in [0,1,…,n-1],而xrange是在每次循环完成后才产生下一个i值。当n较小的时候,两者没什么区别,当n很大的时候,相比range(),xrange()由于不会提前产生List,可以避免内存的浪费。

接下来我们创建一个迭代器:

class Square:    def __init__(self):        self.value = 0    def __iter__(self):#__iter__方法返回迭代器        return self    def next(self):#迭代器必须有next方法        self.value += 1        return self.value*self.valuesquare = Square()for i in square:    print i    if(i>10):        break

运行结果如下:

14916

解释:

__iter__返回指向了自己,每次循环的时候调用的是next函数,for i in square循环中相当于i = square.next()
0 0
原创粉丝点击