Obtenir le nombre de boucles dans une boucle Python FOR


259

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

for item in list:
    print item

et il passe soigneusement 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 en faire quelque chose.

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 (tout comme le for item in list) d'obtenir le nombre d'itérations jusqu'à présent?


1
Vous pourriez également être intéressé par les réponses à l'itération sur une liste en morceaux: stackoverflow.com/questions/434287/…
Dave Bacher

Réponses:



86

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.


9
Vous pouvez également utiliser enumeratele startparamètre facultatif de pour commencer à énumérer avec 1 au lieu de 0, mais j'utiliserais alors le nom de l'OP à la countplace de idx.
Stefan Pochmann

Je n'avais aucune idée qu'il existe un paramètre de démarrage facultatif. Bon à savoir. Merci
Vikram Garg

1

Je connais une question plutôt ancienne mais ... tombé sur autre chose donc je donne mon coup:

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

1

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 zip(range(0,countries),countries):

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

output : Index : 0 Element : Pakistan ...

Voir également :

Python.org


0

Essayez d'utiliser itertools.count([n])


2
Je ne sais pas comment vous utiliseriez le décompte ici. Le décompte est utilisé pour générer des séquences de nombres.
Codie CodeMonkey

mais comment pourrait-il réinitialiser la valeur pour la prochaine itération. L'utilisation d'itertools.count () n'est pas possible ici.
Javed
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.