Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Mengezip Senarai Panjang Tidak Sama dengan Mengulangi Yang Lebih Pendek?

Bagaimanakah Saya Boleh Mengezip Senarai Panjang Tidak Sama dengan Mengulangi Yang Lebih Pendek?

DDD
DDDasal
2024-10-27 19:18:01363semak imbas

How Can I Zip Unequal Length Lists by Repeating the Shorter One?

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!

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