Python でイテレータを作成する
Python イテレータは、__iter__() と __next__() を特徴とするイテレータ プロトコルに準拠したオブジェクトです。メソッド。
iter メソッド:
__iter__() メソッドは、ループの開始時に自動的に呼び出される反復子オブジェクトを返します。
次メソッド:
__next__() メソッドは後続の値を取得し、ループのインクリメント中に暗黙的に呼び出されます。使用可能な値がなくなった場合、StopIteration 例外が発生します。これはループ構造によって検出され、反復を停止するために使用されます。
たとえば、次の単純なカウンター クラスを考えてみましょう。
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
Whenカウンタを利用する:
for c in Counter(3, 9): print(c)
出力は次のようになります。 be:
3 4 5 6 7 8
代わりに、ジェネレーターは反復子作成へのより簡単なアプローチを提供します:
def counter(low, high): current = low while current < high: yield current current += 1
ジェネレーターの使用:
for c in counter(3, 9): print(c)
同一の出力を生成します。内部的には、ジェネレーターは Counter クラスに似ており、反復子プロトコルをサポートしています。
反復子の包括的な概要については、David Mertz の記事「反復子と単純なジェネレーター」を参照してください。
以上がPython の `__iter__` および `__next__` メソッドはどのようにしてイテレータの作成を可能にするのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。