码迷,mamicode.com
首页 > 编程语言 > 详细

python迭代器

时间:2019-02-17 00:47:29      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:迭代器   而不是   color   break   ini   __iter__   就是   top   可迭代对象   

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

什么是迭代器呢?迭代器其实是个协议,就是指实现了__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迭代器

标签:迭代器   而不是   color   break   ini   __iter__   就是   top   可迭代对象   

原文地址:https://www.cnblogs.com/vency/p/10389806.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!