ホームページ > バックエンド開発 > Python チュートリアル > イテレーターを 2 回反復できないのはなぜですか?

イテレーターを 2 回反復できないのはなぜですか?

Linda Hamilton
リリース: 2024-12-21 02:26:09
オリジナル
836 人が閲覧しました

Why Can't I Iterate Over an Iterator Twice?

イテラブルを 2 回反復できない理由

イテレータとイテラブルを扱うときは、それらの消費の性質を理解することが重要です。 Python では、イテレータは 1 回だけ使用できます。これは、イテレータを一度反復処理すると、そのイテレータは枯渇し、再度使用できなくなることを意味します。

次のコードを考えてみましょう。

def test(data):
    for row in data:
        print("first loop")
    for row in data:
        print("second loop")
ログイン後にコピー

データが空ではないイテレータ (例: list イテレータまたはジェネレータ式など)、コードは「最初のループ」を複数回出力しますが、「2 番目のループ」は出力されません。これは、反復子が最初のループ中に消費されているためです。

list/set/dict 内包表記、list()、sum()、reduce の呼び出しなど、他の形式の反復でも同じ問題が発生します。 () など。

ただし、データがリストや範囲 (シーケンス) などの別の反復可能な場合、両方のループは期待どおりに実行され、「最初に」が出力されます。各要素の「ループ」と「2 番目のループ」。これは、これらの反復可能オブジェクトは複数回反復処理できるためです。

繰り返しになりますが、反復子を使用するときは、その単一消費の性質を覚えておくことが重要です。データを再利用するには、要素をリストに保存するか、 itertools.tee() を使用して独立したイテレータを作成することを検討してください。

以上がイテレーターを 2 回反復できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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