ホームページ > バックエンド開発 > Python チュートリアル > Python の `__iter__` および `__next__` メソッドはどのようにしてイテレータの作成を可能にするのでしょうか?

Python の `__iter__` および `__next__` メソッドはどのようにしてイテレータの作成を可能にするのでしょうか?

Patricia Arquette
リリース: 2025-01-02 19:19:43
オリジナル
838 人が閲覧しました

How Do Python's `__iter__` and `__next__` Methods Enable Iterator Creation?

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

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