一次迭代两个或多个列表的更好方法

Moh*_*hit 57 python

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

a,b是名单.

 for i, ele in enumerate(a):
    print ele, b[i]
Run Code Online (Sandbox Code Playgroud)

要么

for i in range(len(a)):
   print a[i], b[i]
Run Code Online (Sandbox Code Playgroud)

或者我缺少任何变种?

使用一个优于其他优势是否有任何特别的优势?

Sve*_*ach 123

通常的方法是使用zip():

for x, y in zip(a, b):
    # x is from a, y is from b
Run Code Online (Sandbox Code Playgroud)

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

  • 打败我.值得注意的是,Python 3的`zip`*是*`izip`.此外,没有`zip_longest`但是`map(None,a,b)`可以做到. (6认同)
  • @ephemient:后者仅在Python 2上再次出现.在Python 3上,这将停止在最短的序列上.并且`izip_longest()`在Python 3上被称为`zip_longest()`... (3认同)

Rac*_*lit 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
Run Code Online (Sandbox Code Playgroud)