107 votes

Énumérer deux listes python simultanément ?

Comment énumérer simultanément deux listes de même longueur ? Je suis sûr qu'il doit y avoir un moyen plus pythonique de faire ce qui suit :

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.

220voto

Ashwini Chaudhary Points 94431

Utilisez zip pour Python2 et Python3 :

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

Notez que zip ne fonctionne que jusqu'à la plus courte des deux listes (ce n'est pas un problème pour les listes de longueur égale), mais, dans le cas de listes de longueur inégale, si vous voulez parcourir toute la liste, utilisez itertools.izip_longest .

17voto

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

En Python 2.x, vous pourriez utiliser itertools.izip au lieu de zip en particulier pour les très longues listes.

11voto

Lucas Malor Points 922
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

2voto

antitrust Points 4853

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

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

1voto

Trying2Learn Points 11

Puisqu'il a été mentionné que les longueurs sont égales,

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X