ホームページ  >  記事  >  バックエンド開発  >  Python で「itertools.cycle」を使用して異なるサイズのリストを圧縮する方法?

Python で「itertools.cycle」を使用して異なるサイズのリストを圧縮する方法?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-27 13:12:30680ブラウズ

How to Zip Differently Sized Lists Using `itertools.cycle` in Python?

組み込み関数を使用した異なるサイズのリストの圧縮

組み込み zip 関数は、2 つのリストをマージするときに短いリストを繰り返すことができません。サイズの異なるリストを使用する場合は、 itertools.cycle 関数を利用してこの結果を達成できます。Python パッケージ itertools の

cycle は、使い果たされた後でも反復可能要素から繰り返し要素を返す反復子を作成します。 zip とサイクルを組み合わせることで、リスト間のサイズの不一致を処理し、必要に応じて長いリストを確実に繰り返すことができます。

例:

<code class="python">A = [1, 2, 3, 4, 5, 6, 7, 8, 9]
B = ["A", "B", "C"]

# Use itertools.cycle to repeat the shorter list
from itertools import cycle
zip_list = zip(A, cycle(B)) if len(A) > len(B) else zip(cycle(A), B)</code>

この例では:

  • if len(A) > len(B) は、最初のリスト (A) が 2 番目のリスト (B) より長いかどうかをチェックします。
  • そうであれば、zip を使用して A を B の循環反復子とマージし、マージされた結果全体で B を効果的に繰り返します。 .
  • B が長い場合は、順序を反転し、代わりに A を循環します。

結果:

zip_list には次のタプルが含まれます。ジェネレーター オブジェクトとして:

[(1, 'A'), (2, 'B'), (3, 'C'), (4, 'A'), (5, 'B'), (6, 'C'), (7, 'A'), (8, 'B'), (9, 'C')]

仕組み:

itertools.cycle は反復可能オブジェクト (この場合は B) のコピーを作成し、そのコピーを繰り返し返します。要素。 zip は A を反復処理する際、各要素を循環反復子からの次に使用可能な要素と組み合わせます。

A が B より短い場合、反復子が使い果たされると、プロセスは B の先頭からやり直します。逆に、A が長い場合、B 反復子は継続的に循環して、マージされたリストの残りの部分を埋めます。

以上がPython で「itertools.cycle」を使用して異なるサイズのリストを圧縮する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。