在Python中,要?jiǎng)?chuàng)建一個(gè)自定義迭代器,需要實(shí)現(xiàn)兩個(gè)特殊的方法:__iter__()
和 __next__()
。__iter__()
方法返回迭代器對(duì)象本身,而 __next__()
方法負(fù)責(zé)返回容器的下一個(gè)值。當(dāng)容器中沒有更多元素時(shí),__next__()
方法應(yīng)該拋出一個(gè) StopIteration
異常。
以下是一個(gè)簡單的自定義迭代器示例,用于計(jì)算斐波那契數(shù)列的前n個(gè)數(shù):
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)
在這個(gè)示例中,我們創(chuàng)建了一個(gè)名為 FibonacciIterator
的類,它接受一個(gè)參數(shù) n
,表示要計(jì)算的斐波那契數(shù)列的前n個(gè)數(shù)。我們在類中實(shí)現(xiàn)了 __iter__()
和 __next__()
方法,以便該類可以迭代器使用。當(dāng)我們使用 for
循環(huán)遍歷 FibonacciIterator
對(duì)象時(shí),它將按順序生成斐波那契數(shù)列的前n個(gè)數(shù)。