Python 3
for f, b in zip(foo, bar):
print(f, b)
zip
berhenti ketika lebih pendek foo
atau bar
berhenti.
Dalam Python 3 , zip
mengembalikan iterator tupel, seperti itertools.izip
pada Python2. Untuk mendapatkan daftar tupel, gunakan list(zip(foo, bar))
. Dan untuk zip sampai kedua iterator habis, Anda akan menggunakan
itertools.zip_longest .
Python 2
Dalam Python 2 , zip
mengembalikan daftar tupel. Ini bagus saat foo
dan bar
tidak masif. Jika keduanya masif maka pembentukan zip(foo,bar)
adalah variabel sementara masif yang tidak perlu, dan harus diganti oleh itertools.izip
atau
itertools.izip_longest
, yang mengembalikan iterator dan bukan daftar.
import itertools
for f,b in itertools.izip(foo,bar):
print(f,b)
for f,b in itertools.izip_longest(foo,bar):
print(f,b)
izip
berhenti ketika salah satu foo
atau bar
habis.
izip_longest
berhenti ketika keduanya foo
dan bar
kelelahan. Ketika iterator yang lebih pendek habis, izip_longest
hasilkan tuple dengan None
posisi yang sesuai dengan iterator itu. Anda juga dapat mengatur fillvalue
selain selain None
jika Anda inginkan. Lihat di sini untuk cerita selengkapnya .
Perhatikan juga bahwa zip
dan saudara- zip
saudaranya yang seperti itu dapat menerima jumlah yang dapat diubah dari iterables sebagai argumen. Sebagai contoh,
for num, cheese, color in zip([1,2,3], ['manchego', 'stilton', 'brie'],
['red', 'blue', 'green']):
print('{} {} {}'.format(num, color, cheese))
cetakan
1 red manchego
2 blue stilton
3 green brie
izip
(meskipunizip
/zip
terlihat jauh lebih bersih)?zip
danzip
-seperti fungsi dariitertools
menerima sejumlah iterables dan bukan hanya 2? Pertanyaan ini kanonik sekarang dan jawaban Anda adalah satu-satunya yang layak diperbarui.i
? Bisakah saya membungkus zip itu dalam penghitungan?for i, (f, b) in enumerate(zip(foo, bar))
.Anda menginginkan
zip
fungsinya.sumber
itertools.izip
jika Anda memiliki banyak elemen.Anda harus menggunakan fungsi ' zip '. Berikut adalah contoh bagaimana fungsi zip Anda sendiri dapat terlihat
sumber
zip(seq1, seq2)
?Anda dapat menggabungkan elemen-elemen ke dalam tuple atau daftar menggunakan pemahaman, lalu membagikannya dengan fungsi generator.
sumber
Jika seseorang mencari sesuatu seperti ini, saya merasa sangat sederhana dan mudah:
Daftar akan diiterasi dengan konten lengkapnya, tidak seperti zip () yang hanya diiterasi hingga panjang konten minimum.
sumber
Berikut cara melakukannya dengan pemahaman daftar:
cetakan:
sumber