同时枚举两个python列表



如何同时枚举两个长度相等的列表?我相信一定有一种更像蟒蛇的方式来做以下事情:

for index, value1 in enumerate(data1):
    print index, value1 + data2[index]

我想在for循环中使用index和data1[index]以及data2[index]。

对Python2和Python3:都使用zip

for index, (value1, value2) in enumerate(zip(data1, data2)):
    print(index, value1 + value2)  # for Python 2 use: `print index, value1 + value2` (no braces)

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

for i, (x, y) in enumerate(zip(data1, data2)):

在Python2.x中,您可能希望使用itertools.izip而不是zip,尤其是对于非常长的列表。

from itertools import count
for index, value1, value2 in zip(count(), data1, data2):
    print(index, value1, value2)

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

尽管这不是很清楚你在寻找什么,

>>> data1 = [3,4,5,7]
>>> data2 = [4,6,8,9]
>>> for index, value in enumerate(zip(data1, data2)):
    print index, value[0]+value[1]

0 7
1 10
2 13
3 16

由于已经提到长度相等,

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

假设您想要使用zip:

   >>> for x in zip([1,2], [3,4]):
    ...     print x
    ... 
    (1, 3)
    (2, 4)

最新更新