Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Memanjangkan Fungsi zip() Python untuk Mengendalikan Iterables yang Tidak Sama Panjang?

Bagaimanakah Saya Boleh Memanjangkan Fungsi zip() Python untuk Mengendalikan Iterables yang Tidak Sama Panjang?

Linda Hamilton
Linda Hamiltonasal
2024-11-27 17:56:13466semak imbas

How Can I Extend Python's zip() Function to Handle Iterables of Unequal Lengths?

Melanjutkan Kefungsian zip(): Mengalas ke Panjang Terpanjang

Fungsi zip() terbina dalam Python menggandingkan elemen daripada berbilang leterable, tetapi ia memotong keputusan kepada panjang yang boleh diulang terpendek. Jika anda memerlukan zip yang lebih komprehensif yang berlapik dengan nilai Tiada untuk diselaraskan dengan input terpanjang, pertimbangkan penyelesaian berikut:

Python 3: itertools.zip_longest

Dalam Python 3, itertools menyediakan fungsi zip_longest(). Ia mengembangkan senarai hasil untuk memadankan panjang input terpanjang.

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

list(itertools.zip_longest(a, b, c))
# [('a1', 'b1', 'c1'), (None, 'b2', 'c2'), (None, 'b3', None)]

Anda boleh menentukan nilai isian tersuai menggunakan parameter isian:

list(itertools.zip_longest(a, b, c, fillvalue='foo'))
# [('a1', 'b1', 'c1'), ('foo', 'b2', 'c2'), ('foo', 'b3', 'foo')]

Python 2: itertools.izip_longest atau peta Tiada

Dalam Python 2, anda boleh menggunakan itertools.izip_longest (diperkenalkan dalam Python 2.6) atau gunakan peta dengan Tiada.

from itertools import izip_longest
a = ['a1']
b = ['b1', 'b2', 'b3']
c = ['c1', 'c2']

list(izip_longest(a, b, c))
# [('a1', 'b1', 'c1'), (None, 'b2', 'c2'), (None, 'b3', None)]

map(None, a, b, c)
# [('a1', 'b1', 'c1'), (None, 'b2', 'c2'), (None, 'b3', None)]

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memanjangkan Fungsi zip() Python untuk Mengendalikan Iterables yang 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