Mengzip Senarai Bersaiz Berbeza dengan Mengulangi Yang Lebih Pendek
Apabila cuba mengezip dua senarai dengan panjang yang tidak sama, fungsi zip terbina dalam akan jatuh pendek dengan tidak mengulangi senarai yang lebih pendek untuk memadankan senarai yang lebih besar. Untuk mengatasinya, pendekatan alternatif adalah perlu.
Penyelesaian Menggunakan itertools.cycle
Fungsi itertools.cycle menyediakan keupayaan untuk lelaran ke atas yang boleh diulang tanpa henti. Ciri ini boleh dimanfaatkan untuk mengulang senarai yang lebih pendek selama-lamanya sambil mengezipnya dengan senarai yang lebih panjang.
Pelaksanaan:
<code class="python">import itertools A = [1, 2, 3, 4, 5, 6, 7, 8, 9] B = ["A", "B", "C"] zip_list = zip(A, itertools.cycle(B)) if len(A) > len(B) else zip(itertools.cycle(A), B)</code>
Dalam penyelesaian ini, kami menggunakan bersyarat pernyataan untuk menentukan senarai yang harus diulang. Jika A lebih panjang daripada B, kami menggunakan itertools.cycle untuk mengulangi B, dan jika B lebih panjang daripada A, kami mengulangi A.
Zip_list yang terhasil akan mengandungi unsur gandingan tupel daripada A dan B, dengan B ialah diulang mengikut keperluan untuk memadankan panjang A. Pendekatan ini memastikan semua elemen daripada kedua-dua senarai digandingkan bersama, dengan senarai yang lebih pendek berulang mengikut keperluan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengezip Senarai Panjang Tidak Sama dengan Mengulangi Yang Lebih Pendek?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!