Il est très courant pour moi de parcourir une liste python pour obtenir le contenu et leurs index. Ce que je fais habituellement est le suivant:
S = [1,30,20,30,2] # My list
for s, i in Zip(S, range(len(S))):
# Do stuff with the content s and the index i
Je trouve cette syntaxe un peu moche, en particulier la partie à l'intérieur de la fonction Zip
. Y a-t-il des manières plus élégantes/pythoniques de faire cela?
Utilisez la fonction intégrée enumerate
: http://docs.python.org/library/functions.html#enumerate
Utilisez enumerate()
:
>>> S = [1,30,20,30,2]
>>> for index, elem in enumerate(S):
print(index, elem)
(0, 1)
(1, 30)
(2, 20)
(3, 30)
(4, 2)
Comme tout le monde:
for i, val in enumerate(data):
print i, val
mais aussi
for i, val in enumerate(data, 1):
print i, val
En d'autres termes, vous pouvez spécifier valeur initiale pour l'index/le nombre généré par enumerate ( ) qui est pratique si vous ne voulez pas que votre index commence par la valeur par défaut de zéro.
J'imprimais des lignes dans un fichier l'autre jour et j'ai spécifié la valeur de départ à 1 pour enumerate()
, ce qui était plus logique que 0 lors de l'affichage d'informations sur une ligne spécifique à l'utilisateur.
enumerate
c'est ce que vous voulez:
for i, s in enumerate(S):
print s, i
>>> for i, s in enumerate(S):
enumerate()
rend ce plus joli:
for index, value in enumerate(S):
print index, value
Voir ici pour plus.