在Python 中建立迭代器
在Python 中建立迭代器需要實現迭代器協議,該協議指定了兩個基本方法: __iter__() 和__下一個__()。這些方法定義了物件如何初始化和迭代一系列值。
理解迭代器協定
在 __iter__() 中,傳回迭代器對象,即通常在循環開始時隱式呼叫。 __next__() 是傳回序列中下一個值的主要方法。對於 Python 2 用戶,此方法稱為 next()。當所有值都用完時, __next__() 會引發 StopIteration 異常,該異常會循環建構 capture 來終止迭代。
範例:計數器迭代器
讓我們建立一個簡單的產生指定範圍內的值的計數器迭代器:
class Counter: def __init__(self, low, high): self.current = low - 1 self.high = high def __iter__(self): return self def __next__(self): # Python 2: def next(self) self.current += 1 if self.current < self.high: return self.current raise StopIteration # Usage: for c in Counter(3, 9): print(c)
這將產生以下結果輸出:
3 4 5 6 7 8
將生成器用於迭代器
生成器提供了另一個創建迭代器的機制。生成器函數一次產生一個值,有效地實作了迭代器協定。
def counter(low, high): current = low while current < high: yield current current += 1 # Usage: for c in counter(3, 9): print(c)
上面的程式碼產生與 Counter 類別相同的輸出。
其他資源
要全面了解迭代器,請參閱 David Mertz 的文章「迭代器和簡單」等資源發電機。 ”
以上是如何在 Python 中建立和使用迭代器?的詳細內容。更多資訊請關注PHP中文網其他相關文章!