关于python:一次迭代两个或多个列表的更好方法

Better way to iterate over two or multiple lists at once

本问题已经有最佳答案,请猛点这里访问。

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

清单为ab

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

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

或者有没有我缺少的变体?

使用一个比另一个有什么特别的好处吗?


通常的方法是使用zip()

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

当两个Iterableab中较短的一个耗尽时,这将停止。同样值得注意的是:itertools.izip()(仅限python 2)和itertools.izip_longest()(python 3中的itertools.zip_longest())。


您可以使用zip

1
2
3
4
5
6
7
8
>>> a = [1, 2, 3]
>>> b = ['a', 'b', 'c']
>>> for x, y in zip(a, b):
...   print x, y
...
1 a
2 b
3 c