組み込み関数を使用した異なるサイズのリストの圧縮
組み込み 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>
この例では:
結果:
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 サイトの他の関連記事を参照してください。