web-dev-qa-db-fra.com

Plusieurs compteurs dans une seule boucle for: Python

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

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

20
Sayan Ghosh

Vous voulez Zip en général, qui 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 n'avez pas à utiliser range directement:

for j, i in enumerate(x):

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

32
Andrew Jaffe

Vous voudrez peut-être 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 enumerate comme mentionné, Zip est une option générale pour avoir plusieurs éléments dans une seule boucle

20
YOU
for i,j in enumerate(x)
5
ghostdog74