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

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

Linda Hamilton
Lepaskan: 2024-10-27 13:12:30
asal
848 orang telah melayarinya

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>
Salin selepas log masuk

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')]
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan