溫馨提示×

Python迭代器如何實(shí)現(xiàn)自定義邏輯

小樊
81
2024-11-09 12:56:43
欄目: 編程語言

在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ù)。

0