はじめに
この記事では、Python が zip 関数を使用して複数のイテレータを同時に走査する方法を主に紹介します。この記事のバージョンは Python3 であり、zip 関数は Python の組み込み関数です。以下では多くを語らないので、詳細な内容を見てみましょう。
アプリケーション例
>>> list1 = ['a', 'b', 'c', 'd'] >>> list2 = ['apple', 'boy', 'cat', 'dog'] >>> for x, y in zip(list1, list2): print(x, 'is', y) # 输出 a is apple b is boy c is cat d is dog
これは 2 つのリストを同時に走査する非常に簡単な方法で、非常に Python 的です。 ! !
原理の説明
Python3 の zip 関数は、2 つ以上のイテレータをジェネレータにカプセル化できます。この zip ジェネレータは、各イテレータからイテレータの次の値を取得し、これらの値をタプルにアセンブルします。このようにして、zip 関数は複数のイテレータを並行して実行します。
注意
入力イテレータの長さが異なる場合、1 つのイテレータが走査されるとすぐに、zip はタプルを生成しなくなり、zip は早期に終了します。これにより、予期しない結果が生じる可能性があるため、無視すべきではありません。 zip でカプセル化されたリストが同じ長さであるかどうかわからない場合は、次のコマンドを使用できます。
itertools 組み込みモジュールの zip_longest 関数は、それらの長さが等しいかどうかを気にしません。
Python2 では、zip はジェネレーターではありません。これは、これらの反復子を並行して実行し、タプルをアセンブルし、タプルのリストを一度に完全に返します。これにより、大量のメモリが占有され、プログラムがクラッシュする可能性があります。 Python2 で大量のデータを含むイテレータを走査するには、使用することをお勧めします itertools 組み込みモジュールの izip 関数。
まとめ
上記は、zip 関数を使用して複数のイテレーターを同時に走査する Python の内容全体です。この記事の内容が皆さんの学習や仕事に少しでも役立つことを願っています。メッセージを残して通信することができます。
その他の関連記事については、PHP 中国語 Web サイト (www.php.cn) に注目してください。