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!