Python迭代器学习笔记
目录
-
更多分享:http://www.catbro.cn
-
在写python代码时,我们经常会用for x in xx: 语法来进行遍历输出,这么爽的特性背后是如何实现的呢?
-
自定义迭代器类型其实很简单,我们只需要重写
_iter_
和_next_
即可。 -
_iter_
:该方法是迭代器规则的基础,该方法返回一个迭代器对象。 -
_next_
:迭代器就是拥有next方法的一个对象,通过不断地去调用next方法判断是否还有值来进行遍历。如果next调用后无值可操作,就会引发一个StopIteration异常
自定义迭代器类
class Fibs:
def __init__(self):
self.a =0;
self.b =1;
def __next__(self):
self.a ,self.b = self.b ,self.a+self.b;
if self.a>1000:
raise StopIteration;
else:
return self.a;
def __iter__(self):
return self;
fibs = Fibs();
for f in fibs:
print(f)
-
输出:
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987
为什么使用迭代器
- 我们为什么要使用迭代器而不使用列表呢?
- 因为列表的杀伤力太大,如果遍历的值很大,列表就会占用非常大的内存。
- 使用迭代器可以获取一个值时计算一个值。
- 使用迭代器更通用、简单、优雅