web-dev-qa-db-fra.com

Énumérer deux listes de python simultanément?

Comment énumérer deux listes de longueur égale simultanément? Je suis sûr qu'il doit exister une méthode plus pythonique pour effectuer les opérations suivantes:

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

Je veux utiliser l'index et data1 [index] et data2 [index] à l'intérieur de la boucle for.

30

Utilisez Zip :

for index, (value1, value2) in enumerate(Zip(data1, data2)):
    print index, value1 + value2

Notez que Zip ne fonctionne que jusqu’à la plus courte des deux listes (ce qui ne pose pas de problème pour les listes de longueurs égales), mais si vous souhaitez parcourir des listes de longueurs inégales, utilisez itertools.izip_longest .

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

Dans Python 2.x, vous pouvez utiliser itertools.izip au lieu de Zip, esp. pour de très longues listes.

10
Fred Foo
from itertools import count

for index, value1, value2 in Zip(count(), data1, data2):
    print(index, value1, value2)

Source: http://www.saltycrane.com/blog/2008/04/how-to-use-pythons-enumerate-and-Zip-to/#c2603

1
Marco Sulla

Comme il a été mentionné que les longueurs sont égales,

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

Bien que ce que vous recherchez ne soit pas très clair,

>>> 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
0
octoback

Supposons que vous souhaitiez utiliser Zip:

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