66

假设我有两个或多个相同长度的列表。什么是遍历它们的好方法?

a,b是列表​​。

 for i, ele in enumerate(a):
    print ele, b[i]

或者

for i in range(len(a)):
   print a[i], b[i]

还是我缺少任何变体?

使用其中一个有什么特别的优势吗?

4

2 回答 2

135

通常的方法是使用zip()

for x, y in zip(a, b):
    # x is from a, y is from b

a当两个可迭代对象中较短的一个b被耗尽时,这将停止。另外值得注意的是:(itertools.izip()仅限 Python 2)和itertools.izip_longest()itertools.zip_longest()在 Python 3 中)。

于 2012-04-09T21:55:56.903 回答
15

您可以使用zip

>>> a = [1, 2, 3]
>>> b = ['a', 'b', 'c']
>>> for x, y in zip(a, b):
...   print x, y
... 
1 a
2 b
3 c
于 2012-04-09T21:57:40.647 回答