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
Barbara Streisandasal
2024-12-05 04:14:09876semak imbas

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)))

Kod ini akan mengeluarkan senarai tupel berikut:

[('a1', 'b1', 'c1'), (None, 'b2', 'c2'), (None, 'b3', None)]

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')))

Ini akan mengeluarkan senarai tupel berikut:

[('a1', 'b1', 'c1'), ('foo', 'b2', 'c2'), ('foo', 'b3', 'foo')]

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!

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