关于迭代器
Posted kerryworld
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于迭代器相关的知识,希望对你有一定的参考价值。
方法__iter__返回一个迭代器,它是包含方法__next__的对象,而调用这个方法时可不提供
任何参数。当你调用方法__next__时,迭代器应返回其下一个值。如果迭代器没有可供返回的值,
应引发StopIteration异常。你还可使用内置的便利函数next,在这种情况下,next(it)与
it.__next__()等效
斐波那契数列:
class Fib: def __init__(self): self.a=0 self.b=1 def __next__(self): self.a,self.b=self.b,self.a+self.b return self.a def __iter__(self): return self fib=Fib() for i in fib: if i<1000: print(i) else: break
通过对可迭代对象调用内置函数iter,可获得一个迭代器:
In [1]: it=iter([x for x in range(100)]) In [2]: next(it) Out[2]: 0 In [3]: next(it) Out[3]: 1
从迭代器创建序列
除了对迭代器和可迭代对象进行迭代(通常这样做)之外,还可将它们转换为序列。在可以
使用序列的情况下,大多也可使用迭代器或可迭代对象(诸如索引和切片等操作除外)。一个这
样的例子是使用构造函数list显式地将迭代器转换为列表
class TestIterator: value = 0 def __next__(self): self.value += 1 if self.value > 10: raise StopIteration return self.value def __iter__(self): return self it=TestIterator() print(list(it))
运行结果:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
以上是关于关于迭代器的主要内容,如果未能解决你的问题,请参考以下文章