Python 3
for f, b in zip(foo, bar):
print(f, b)
当较短的foo或bar停止时,Zip停止。
在Python 3中,zip
返回元组的迭代器,如itertools。Python2中的izip。得到一份清单
对于元组,使用list(zip(foo, bar))。和压缩,直到两个迭代器都为
累了,你会用
itertools.zip_longest。
Python 2
在Python 2中,zip
返回一个元组列表。当foo和bar不是巨大的时候,这很好。如果它们都是巨大的,那么形成zip(foo,bar)是不必要的巨大
临时变量,应由itertools替换。izip或
itertools。Izip_longest,它返回一个迭代器而不是一个列表。
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)
当foo或bar耗尽时,Izip停止。
当foo和bar耗尽时,Izip_longest停止。
当较短的迭代器耗尽时,izip_longest将在该迭代器对应的位置生成一个具有None的元组。如果你愿意,你也可以设置一个不同的填充值。请看这里了解完整的故事。
还要注意,zip及其类似zip的兄弟可以接受任意数量的可迭代对象作为参数。例如,
for num, cheese, color in zip([1,2,3], ['manchego', 'stilton', 'brie'],
['red', 'blue', 'green']):
print('{} {} {}'.format(num, color, cheese))
打印
1 red manchego
2 blue stilton
3 green brie