Accès à l'index dans les boucles "for" ?

Comment accéder à l'index dans une boucle "for" comme la suivante ?

ints = [8, 23, 45, 12, 78]
for i in ints:
    print('item #{} = {}'.format(???, i))

Je veux obtenir cette sortie :

item #1 = 8
item #2 = 23
item #3 = 45
item #4 = 12
item #5 = 78

Lorsque je le parcours en utilisant une boucle for, comment puis-je accéder à l'index de la boucle, de 1 à 5 dans ce cas ?

Solution

L'utilisation d'une variable d'état supplémentaire, telle qu'une variable d'index (que vous utiliseriez normalement dans des langages tels que C ou PHP), est considérée comme non pythique.

La meilleure option est d'utiliser la fonction intégrée [enumerate()][1], disponible dans Python 2 et 3 :

for idx, val in enumerate(ints):
    print(idx, val)

Consultez le [PEP 279][2] pour en savoir plus.

[1] : https://docs.python.org/3/library/functions.html#enumerate "enumerate" (en anglais) [2] : https://www.python.org/dev/peps/pep-0279/ "PEP 279" (EN ANGLAIS)

Commentaires (2)
for i in range(len(ints)):
   print i, ints[i]
Commentaires (7)

A l'ancienne :

for ix in range(len(ints)):
    print ints[ix]

Compréhension de la liste :

[ (ix, ints[ix]) for ix in range(len(ints))]

>>> ints
[1, 2, 3, 4, 5]
>>> for ix in range(len(ints)): print ints[ix]
... 
1
2
3
4
5
>>> [ (ix, ints[ix]) for ix in range(len(ints))]
[(0, 1), (1, 2), (2, 3), (3, 4), (4, 5)]
>>> lc = [ (ix, ints[ix]) for ix in range(len(ints))]
>>> for tup in lc:
...     print tup
... 
(0, 1)
(1, 2)
(2, 3)
(3, 4)
(4, 5)
>>> 
Commentaires (3)