4256 votes

L'accès à l'index en Python pour les boucles

Quelqu'un sait-il comment accéder à l'index lui-même pour une liste comme ceci:

ints = [8, 23, 45, 12, 78]

Quand je boucle à l'aide d'une boucle for, comment puis-je accéder à l'indice de boucle, de 1 à 5, dans ce cas?

7168voto

Mike Hordecki Points 14757

L'aide supplémentaire de l'état de la variable, tels que l'indice de la variable (que vous utilisez normalement dans des langages tels que C ou PHP), est considéré comme non-pythonic.

La meilleure option est d'utiliser la fonction builtin énumérer:

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

Découvrez PEP 279 pour plus d'. NB: Il fonctionne sur Python 2.x et Python 3.x

182voto

user570826 Points 307

Son assez simple de commencer à partir de l' 1 autres qu' 0.

for index in enumerate(iterable, start=1):
   print index

Bon pour aller.

103voto

David Hanak Points 5960
for i in range(len(ints)):
   print i, ints[i]

36voto

Charlie Martin Points 62306

Ancienne:

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

Compréhension de 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)
>>>

13voto

thinker007 Points 118

Selon cette discussion: http://bytes.com/topic/python/answers/464012-objects-list-index

Compteur de boucle d'itération

L'idiome actuel pour faire une boucle sur les indices rend l'utilisation de l'intégré dans la "gamme" de la fonction:

for i in range(len(sequence)):
    # work with index i

Boucle sur les deux éléments et indices peut être réalisé soit par le vieil idiome ou à l'aide de la nouvelle 'zip' de la fonction intégrée dans[2]:

for i in range(len(sequence)):
    e = sequence[i]
    # work with index i and element e

ou

for i, e in zip(range(len(sequence)), sequence):
    # work with index i and element e

via http://www.python.org/dev/peps/pep-0212/

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