自定义迭代器实现
如何实现一个自定义迭代器?请实现一个能产生斐波那契数列的迭代器类。
回答
屠龙少年
实现 __iter__() 返回自身,实现 __next__() 返回下一个值,在结束时抛出 StopIteration。
class FibIterator:
def __init__(self, max_n):
self.a, self.b = 0, 1
self.n = 0
self.max_n = max_n
def __iter__(self):
return self
def __next__(self):
if self.n >= self.max_n:
raise StopIteration
result = self.a
self.a, self.b = self.b, self.a + self.b
self.n += 1
return result
也可以使用生成器函数更简洁地实现同样的功能。