ホームページ > バックエンド開発 > Python チュートリアル > Python イテレータはどのように機能するか: `__iter__` および `__next__` メソッドのガイド?

Python イテレータはどのように機能するか: `__iter__` および `__next__` メソッドのガイド?

Susan Sarandon
リリース: 2024-12-18 01:08:11
オリジナル
693 人が閲覧しました

How Do Python Iterators Work: A Guide to the `__iter__` and `__next__` Methods?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート