python迭代器

Posted vency

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python迭代器相关的知识,希望对你有一定的参考价值。

有时候当我们想逐个获取某些值而不是一次性获取到整个序列的时候(比如列表太大,不适合一次性加载到内存的时候),我们就可以使用迭代器.

什么是迭代器呢?迭代器其实是个协议,就是指实现了__iter__方法的对象,我们把他成为可迭代对象,__iter__方法需要返回一个迭代器,它是包含方法__next__的对象,当我们调用__next__方法的时候,迭代器应该返回其下一个值,如果已经到达最后一个,则跑出StopIteration异常。

通常我们也可以使用next方法来迭代迭代器,next(it)跟it.__next__()相同。

下面以斐波那契数列为例,实现一个迭代器。

 1 class Fib:
 2     def __init__(self):
 3         self.a = 0
 4         self.b = 1
 5 
 6     def __iter__(self):
 7         return self
 8 
 9     def __next__(self):
10         self.a, self.b = self.b, self.a + self.b
11         return self.b

然后创建一个Fib对象,就可以在for循环中使用这个对象,如找出第一个大于100的斐波那契数:

1 fibs = Fib()
2 for f in fibs:
3     if f > 100:
4         print(f)
5         break

也可以使用next(fibs)来往前获取值,迭代器只能往前,不能后退!!!

以上是关于python迭代器的主要内容,如果未能解决你的问题,请参考以下文章

为啥我在这个 python 片段中得到 float 是不可迭代的? [复制]

python:可迭代对象,迭代器,生成器函数,生成器的解析举例代码说明

python:可迭代对象,迭代器,生成器函数,生成器的解析举例代码说明

python学习之-迭代器

python中迭代器(转)

Python概念之装饰器迭代器生成器