Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Zip Senarai Bersaiz Berbeza Menggunakan `itertools.cycle` dalam Python?

Bagaimana untuk Zip Senarai Bersaiz Berbeza Menggunakan `itertools.cycle` dalam Python?

Linda Hamilton
Linda Hamiltonasal
2024-10-27 13:12:30685semak imbas

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

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:

  • jika len(A) > len(B) menyemak sama ada senarai pertama (A) lebih panjang daripada yang kedua (B).
  • Jika ya, ia menggunakan zip untuk menggabungkan A dengan lelaran berbasikal B, dengan berkesan mengulangi B sepanjang hasil gabungan .
  • Jika B lebih panjang, ia membalikkan pesanan dan kitaran A sebaliknya.

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn