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