Cara Zip dan Pad ke Panjang Terpanjang dalam Python
Dalam Python, fungsi zip() digunakan untuk menggabungkan elemen daripada dua atau lebih banyak objek yang boleh diubah. Walau bagaimanapun, zip() hanya mempertimbangkan panjang input terpendek. Bagaimana jika anda ingin memasukkan hasil ke panjang input terpanjang?
itertools.zip_longest
Dalam Python 3, fungsi itertools.zip_longest() menyediakan ini kefungsian. Ia memerlukan berbilang iterables dan mengembalikan iterator yang menghasilkan tupel yang mengandungi elemen daripada iterables, dengan Tiada nilai yang mengalas iterables yang lebih pendek.
import itertools a = ['a1'] b = ['b1', 'b2', 'b3'] c = ['c1', 'c2'] result = list(itertools.zip_longest(a, b, c)) print(result) # Output: [('a1', 'b1', 'c1'), (None, 'b2', 'c2'), (None, 'b3', None)]
fillvalue Parameter
Anda boleh tentukan parameter isian untuk digunakan dan bukannya Tiada untuk padding.
result = list(itertools.zip_longest(a, b, c, fillvalue='foo')) print(result) # Output: [('a1', 'b1', 'c1'), ('foo', 'b2', 'c2'), ('foo', 'b3', 'foo')]
Alternatif Python 2
Untuk Python 2, anda mempunyai dua pilihan:
result = map(None, a, b, c) print(list(result)) # Output: [('a1', 'b1', 'c1'), (None, 'b2', 'c2'), (None, 'b3', None)]
from itertools import izip_longest result = list(izip_longest(a, b, c)) print(result) # Output: [('a1', 'b1', 'c1'), (None, 'b2', 'c2'), (None, 'b3', None)]
Atas ialah kandungan terperinci Bagaimana untuk Pad Keputusan Python\'s zip() ke Panjang Input Terpanjang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!