Python 3
for f, b in zip(foo, bar): print(f, b)
当
foo或
bar的较短者停止时,
zip停止。
在Python 3
zip中,像
itertools.izip在Python2中一样,返回元组的迭代器。要获取元组列表,请使用
list(zip(foo, bar))。要压缩直到两个迭代器都用尽,可以使用
itertools.zip_longest。
Python 2
在Python 2中,
zip返回一个元组列表。当
foo且
bar不是很大时,这很好。如果它们都是大量的,则形成
zip(foo,bar)是不必要的大量临时变量,应将其替换为
itertools.izip或
itertools.izip_longest,这将返回迭代器而不是列表。
import itertoolsfor f,b in itertools.izip(foo,bar): print(f,b)for f,b in itertools.izip_longest(foo,bar): print(f,b)
izip当
foo或
bar已耗尽时停止。
izip_longest当两个停止
foo和
bar耗尽。当较短的迭代器用尽时,将
izip_longest产生一个元组,
None其位置与该迭代器相对应。你还可以设置不同
fillvalue之外
None,如果你想。看到这里的完整故事。
还要注意
zip,其
zip类似
brethen可以接受任意数量的
Iterables作为参数。例如,
for num, cheese, color in zip([1,2,3], ['manchego', 'stilton', 'brie'], ['red', 'blue', 'green']): print('{} {} {}'.format(num, color, cheese))输出
1 red manchego2 blue stilton3 green brie



