在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個數。