組み込み関数を使用した異なるサイズのリストの圧縮
組み込みの zip 関数は、2 つのリストをマージするときに短いリストを繰り返すことができませんサイズの異なるリストの場合は、 itertools.cycle 関数を利用してこの結果を達成できます。Python パッケージの
cycle itertools は、反復可能オブジェクトが枯渇した後でも反復可能オブジェクトから要素を繰り返し返す反復子を作成します。 zip とサイクルを組み合わせることで、リスト間のサイズの不一致を処理し、必要に応じて長いリストを確実に繰り返すことができます。
例:
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)
この例では:
Result:
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 反復子は継続的に循環して、マージされたリストの残りの部分を埋めます。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3