0

可能重复:
如何遍历两个列表 - python

我想同时迭代两个项目,在我看来这个迭代是这样的:

for elem1 in list 1 and for elem2 in list2:
    do something to elem1; do something to elem2

但是,这种语法是不可接受的。需要明确的是,我不是在谈论嵌套的 for 循环,因为那样我会为第一个列表中的每个元素迭代整个列表。我想同时遍历两个列表(或其他)。有没有一种pythonic方法可以做到这一点?

4

1 回答 1

11

使用zip()

for elem1, elem2 in zip(list1, list2):

如果其中一个列表比另一个长,您将不会看到超出较短列表长度的元素。

在 python 2 上,zip()导致两个列表的副本压缩在一起,并且对于可能是内存负担的大列表。用于itertools.izip()如此大的列表,它会返回一个迭代器。在 python 3 上,zip()它本身已经返回了一个迭代器。

如果您需要循环遍历最长的列表(并为缺少的较短列表元素填充填充值),请itertools.izip_longest()改用:

from itertools import izip_longest

for elem1, elem2 in izip_longest(list1, list2):
于 2013-01-08T07:15:47.797 回答