实现自己的迭代器
我们以生成斐波那契數列为例,创建一个迭代器类:
class Fab(object):
def __init__(self, max):
self.max = max
self.n = 0
self.a = 0
self.b = 1
def __iter__(self):
return self
def __next__(self):
if self.n < self.max:
r = self.b
self.a, self.b = self.b, self.a + self.b
self.n = self.n + 1
return r
raise StopIteration()
主要实现两个方法:iter 和 next
调用方式如下:
for n in Fab(5):
print(n)
结果如下:
1
1
2
3
5