327 votes

Obtenir le nombre de boucles dans une boucle FOR Python

Dans un Python for boucle qui itère sur une liste que nous pouvons écrire :

for item in list:
    print item

et il passe proprement en revue tous les éléments de la liste. Existe-t-il un moyen de savoir, dans la boucle, combien de fois j'ai bouclé jusqu'à présent ? Par exemple, je veux prendre une liste et après avoir traité dix éléments, je veux faire quelque chose avec eux.

Les alternatives auxquelles j'ai pensé seraient quelque chose comme :

count=0
for item in list:
    print item
    count +=1
    if count % 10 == 0:
        print 'did ten'

Ou :

for count in range(0,len(list)):
    print list[count]
    if count % 10 == 0:
        print 'did ten'

Existe-t-il un meilleur moyen (comme le for item in list ) pour obtenir le nombre d'itérations jusqu'à présent ?

1 votes

Vous pourriez également être intéressé par les réponses à la question de l'itération sur une liste par morceaux : stackoverflow.com/questions/434287/

4 votes

722voto

Nick Bastin Points 12627

La méthode pythique consiste à utiliser enumerate :

for idx,item in enumerate(list):

0 votes

Super duper, juste une ligne magique qui résout tous les problèmes.

114voto

Vikram Garg Points 29

Je suis d'accord avec Nick. Voici un code plus élaboré.

#count=0
for idx, item in enumerate(list):
    print item
    #count +=1
    #if count % 10 == 0:
    if (idx+1) % 10 == 0:
        print 'did ten'

J'ai commenté la variable count dans votre code.

13 votes

Vous pouvez également utiliser enumerate L'optionnel start pour commencer à énumérer avec 1 au lieu de 0, mais alors j'utiliserais le nom de l'OP. count au lieu de idx .

2voto

Timma Points 98

En utilisant la fonction zip, nous pouvons obtenir à la fois l'élément et l'index.

countries = ['Pakistan','India','China','Russia','USA']

for index, element in zip(range(0,countries),countries):

         print('Index : ',index)
         print(' Element : ', element,'\n')

output : Index : 0 Element : Pakistan ...

Voir aussi :

Python.org

1voto

hephestos Points 104

Je sais qu'il s'agit d'une vieille question, mais je suis tombé sur la recherche d'autres choses, alors je tente ma chance :

[each*2 for each in [1,2,3,4,5] if each % 10 == 0])

0voto

Vatsal Dutt Points 1

Vous pouvez également vérifier l'index de la liste. Lorsqu'il atteint l'indice de liste 9, qui est le 10e élément de la liste, il imprime "did ten".

for item in list:
    print item
    if list.index(item) == 9:
        print 'did ten'

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