在Python中,要创建一个自定义迭代器,需要实现两个特殊的方法:__iter__()
和 __next__()
。__iter__()
方法返回迭代器对象本身,而 __next__()
方法负责返回容器的下一个值。当容器中没有更多元素时,__next__()
方法应该抛出一个 StopIteration
异常。
以下是一个简单的自定义迭代器示例,用于计算斐波那契数列的前n个数:
class FibonacciIterator: def __init__(self, n): self.n = n self.current = 0 self.prev = 0 self.a = 0 self.b = 1 def __iter__(self): return self def __next__(self): if self.current < self.n: result = self.a self.a, self.b = self.b, self.a + self.b self.current += 1 return result else: raise StopIteration # 使用自定义迭代器 fib_iterator = FibonacciIterator(10) for num in fib_iterator: print(num)
在这个示例中,我们创建了一个名为 FibonacciIterator
的类,它接受一个参数 n
,表示要计算的斐波那契数列的前n个数。我们在类中实现了 __iter__()
和 __next__()
方法,以便该类可以迭代器使用。当我们使用 for
循环遍历 FibonacciIterator
对象时,它将按顺序生成斐波那契数列的前n个数。