Mengzip Senarai Bersaiz Berbeza Menggunakan Fungsi Terbina Dalam
Walaupun fungsi zip terbina dalam tidak dapat mengulangi senarai yang lebih pendek apabila menggabungkan dua senarai bersaiz berbeza, anda boleh memanfaatkan fungsi itertools.cycle untuk mencapai hasil ini.
kitaran daripada pakej Python itertools mencipta iterator yang berulang kali mengembalikan elemen daripada lelaran, walaupun selepas kehabisan. Dengan menggabungkan zip dengan kitaran, adalah mungkin untuk mengendalikan percanggahan saiz antara senarai dan memastikan senarai yang lebih panjang diulang seperti yang diperlukan.
Contoh:
<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>
Dalam contoh ini:
Keputusan:
zip_list akan mengandungi tupel berikut sebagai objek penjana:
[(1, 'A'), (2, 'B'), (3, 'C'), (4, 'A'), (5, 'B'), (6, 'C'), (7, 'A'), (8, 'B'), (9, 'C')]
Cara ia Berfungsi:
itertools.cycle mencipta salinan lelaran (dalam kes ini, B) dan berulang kali mengembalikannya elemen. Apabila zip berulang melalui A, ia menggandingkan setiap elemen dengan elemen seterusnya yang tersedia daripada lelaran berbasikal.
Jika A lebih pendek daripada B, proses akan bermula semula dari permulaan B apabila lelarannya habis. Sebaliknya, jika A lebih panjang, lelaran B berputar secara berterusan untuk mengisi baki senarai yang digabungkan.
Atas ialah kandungan terperinci Bagaimana untuk Zip Senarai Bersaiz Berbeza Menggunakan `itertools.cycle` dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!