同时枚举两个python列表?

Qua*_*lis 46 python list

如何同时枚举两个相等长度的列表?我确信必须有更多的pythonic方法来执行以下操作:

for index, value1 in enumerate(data1):
    print index, value1 + data2[index]
Run Code Online (Sandbox Code Playgroud)

我想在for循环中使用index和data1 [index]和data2 [index].

Ash*_*ary 97

用途zip:

for index, (value1, value2) in enumerate(zip(data1, data2)):
    print index, value1 + value2
Run Code Online (Sandbox Code Playgroud)

请注意,zip只运行两个列表中较短的一个(对于等长列表而言不是问题),但是,如果要遍历整个列表,则在长度不一致的情况下使用itertools.izip_longest.

  • 谢谢这解决了`zip(data1,data2).index(val1,val2)` (2认同)

Fre*_*Foo 10

for i, (x, y) in enumerate(zip(data1, data2)):
Run Code Online (Sandbox Code Playgroud)

在Python 2.x中,您可能希望使用itertools.izip而不是zip,尤其是.很长的名单.

  • 有没有人讨厌`enumerate`是九个字符长? (11认同)
  • @StevenRumbalski:可读性第一!- enum() 被考虑但被拒绝:[PEP 279](http://www.python.org/dev/peps/pep-0279/) (3认同)
  • @jamylak:不要忘记请求“range”→“rng”以形成更强有力的案例。哦,还有“rpr”。 (2认同)

Mar*_*lla 8

from itertools import count

for index, value1, value2 in zip(count(), data1, data2):
    print(index, value1, value2)
Run Code Online (Sandbox Code Playgroud)

来源:http : //www.saltycrane.com/blog/2008/04/how-to-use-pythons-enumerate-and-zip-to/#c2603