2010-04-20 3 views
15

Est-il possible en Python d'exécuter plusieurs compteurs dans une seule boucle for comme en C/C++?Plusieurs compteurs dans une seule boucle for: Python

Je voudrais quelque chose comme - for i,j in x,range(0,len(x)): Je sais que Python interprète cela différemment et pourquoi, mais comment exécuter deux compteurs de boucle simultanément dans une seule boucle for?

+2

En plus (puisque vous ne voulez probablement pas l'utiliser dans ce cas): 'plage (0, len (x)) == gamme (len (x))' ' –

Répondre

13

Vous pouvez utiliser zip

for i,j in zip(x,range(0,len(x))): 

Exemple,

>>> x = [1, 2, 3] 
>>> y = [4, 5, 6] 
>>> zipped = zip(x, y) 
>>> print zipped 
[(1, 4), (2, 5), (3, 6)] 
>>> for a,b in zipped: 
...  print a,b 
... 
1 4 
2 5 
3 6 
>>> 

Remarque: La bonne réponse à cette question est que d'autres mentionné enumerate, zip est l'option générale d'avoir plusieurs éléments en une seule boucle

+0

zip' est bonne, mais dans ce cas particulier, «énumérer» est la manière habituelle de faire ce que veut l'affiche originale. – EOL

27

Vous voulez zip en général ch combine deux itérateurs, comme le dit @ S. Mark. Mais dans ce cas enumerate fait exactement ce dont vous avez besoin, ce qui signifie que vous ne devez pas utiliser range directement:

for j, i in enumerate(x): 

Notez que cela donne l'indice de x premier, donc je l'ai inversé j, i.

Questions connexes