Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimanakah Fungsi `zip_longest()` Python Mengendalikan Urutan Input Tidak Sama Panjang?

Bagaimanakah Fungsi `zip_longest()` Python Mengendalikan Urutan Input Tidak Sama Panjang?

Barbara Streisand
Lepaskan: 2024-12-05 04:14:09
asal
881 orang telah melayarinya

How Does Python's `zip_longest()` Function Handle Unequal-Length Input Sequences?

Memperluaskan Kefungsian Zip dengan Padding

Zip() ialah fungsi berguna untuk menggabungkan elemen daripada berbilang jujukan ke dalam satu senarai tupel. Walau bagaimanapun, ia mempunyai had kerana ia hanya akan mencipta tupel dengan seberapa banyak elemen sebagai urutan input terpendek. Ini boleh membawa kepada hasil yang tidak lengkap apabila bekerja dengan jujukan dengan panjang yang berbeza-beza.

Untuk mengatasi had ini, fungsi yang lebih maju dipanggil zip_longest() telah diperkenalkan. zip_longest() tersedia dalam Python 3 dan ia menyediakan versi zip() yang dipertingkatkan yang secara automatik meletakkan nilai yang tiada dalam hasil carian supaya panjang senarai terhasil sepadan dengan panjang input terpanjang dan bukannya yang terpendek.

Untuk menggunakan zip_longest(), hanya hantar urutan yang anda mahu gabungkan sebagai argumen. Fungsi ini akan mencipta tupel untuk setiap set elemen yang sepadan dalam jujukan input, dan ia akan mengisi sebarang nilai yang hilang dengan nilai padding lalai (biasanya Tiada).

Sebagai contoh, pertimbangkan coretan kod berikut:

a = ['a1']
b = ['b1', 'b2', 'b3']
c = ['c1', 'c2']

print(list(itertools.zip_longest(a, b, c)))
Salin selepas log masuk

Kod ini akan mengeluarkan senarai tupel berikut:

[('a1', 'b1', 'c1'), (None, 'b2', 'c2'), (None, 'b3', None)]
Salin selepas log masuk

Seperti yang anda lihat, senarai terhasil mempunyai panjang yang sama dengan jujukan input terpanjang (b). Nilai yang tiada dalam a dan c telah dipadatkan dengan Tiada.

Anda juga boleh menentukan nilai padding tersuai menggunakan parameter nilai isian. Contohnya, pad coretan kod berikut kehilangan nilai dengan rentetan 'foo':

print(list(itertools.zip_longest(a, b, c, fillvalue='foo')))
Salin selepas log masuk

Ini akan mengeluarkan senarai tupel berikut:

[('a1', 'b1', 'c1'), ('foo', 'b2', 'c2'), ('foo', 'b3', 'foo')]
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah Fungsi `zip_longest()` Python Mengendalikan Urutan Input Tidak Sama Panjang?. 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