Python イテレータの仕組み: 包括的なガイド
イテレータは Python プログラミングの重要な要素であり、シーケンスの効率的かつ簡潔な走査やシーケンスの生成を可能にします。その場での値。この記事では、基本的な概念と実装に焦点を当てて、Python で基本的なイテレータを作成する方法について説明します。
イテレータ プロトコルについて理解する
Python イテレータは、定義された特定のプロトコルに従います。 __iter__() メソッドと __next__() メソッドによって。 __iter__() メソッドは、反復のエントリ ポイントとして機能する iterator オブジェクトを返します。逆に、__next__() メソッドはシーケンス内の次の値を返すか、値がなくなった場合に StopIteration 例外を発生させます。
カスタム イテレータの作成
次の論理的に値を「含む」クラスの例:
class Example: def __init__(self, values): self.values = values
イテレータを実装するにはこのクラスでは、__iter__() メソッドと __next__() メソッドを定義します。
class Example: def __init__(self, values): self.values = values def __iter__(self): return self def __next__(self): if self.values: return self.values.pop(0) else: raise StopIteration
この例では、反復子は値リストから値を 1 つずつポップして返します。リストが空の場合、StopIteration 例外が発生します。
反復子の使用
これで、次のように反復子を使用できるようになります。
e = Example([1, 2, 3]) for value in e: print("The example object contains", value)
このコードは値 [1、2、3] を反復処理し、各値をconsole.
より複雑なイテレータ
イテレータは、インスタンスの特定の属性や値へのアクセスに限定されません。また、値の取得元を制御したり、その場で値を計算したりすることもできます。たとえば、次の Counter クラスは値の範囲を生成します:
class Counter: def __init__(self, low, high): self.current = low - 1 self.high = high def __iter__(self): return self def __next__(self): self.current += 1 if self.current < self.high: return self.current raise StopIteration
このクラスで __iter__() メソッドを呼び出すことにより、指定された範囲内の値を生成する反復子を取得します。
結論
Python イテレータは、シーケンスまたはシーケンスを反復処理するための強力で柔軟なメカニズムを提供します。価値を生み出すこと。イテレータ プロトコルとカスタム イテレータの実装方法を理解すると、開発者は効率的で汎用性の高いコードを作成できるようになります。
以上がPython イテレータはどのように機能するか: `__iter__` および `__next__` メソッドのガイド?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。