Holen Sie sich die Anzahl der Schleifen in einer Python FOR-Schleife


259

In einer Python- forSchleife, die eine Liste durchläuft, können wir schreiben:

for item in list:
    print item

und es geht ordentlich durch alle Elemente in der Liste. Gibt es eine Möglichkeit, innerhalb der Schleife zu wissen, wie oft ich bisher eine Schleife durchgeführt habe? Zum Beispiel möchte ich eine Liste erstellen und nachdem ich zehn Elemente verarbeitet habe, möchte ich etwas damit tun.

Die Alternativen, über die ich nachgedacht habe, wären ungefähr:

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

Oder:

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

Gibt es einen besseren Weg (genau wie den for item in list), um die Anzahl der bisherigen Iterationen zu ermitteln?


1
Vielleicht interessieren Sie sich auch für die Antworten auf das Durchlaufen einer Liste in Blöcken
Dave Bacher

4
Mögliches Duplikat des
Zugriffs

Antworten:



86

Stimme Nick zu. Hier ist der Code ausführlicher.

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

Ich habe die Zählvariable in Ihrem Code auskommentiert.


9
Sie können auch enumerateden optionalen startParameter verwenden, um mit der Aufzählung mit 1 anstelle von 0 zu beginnen. Dann würde ich jedoch countstattdessen den Namen des OP verwenden idx.
Stefan Pochmann

Ich hatte keine Ahnung, dass es einen optionalen Startparameter gibt. Gut zu wissen. Vielen Dank
Vikram Garg

1

Ich kenne eine ziemlich alte Frage, aber ... bin auf eine andere Sache gestoßen, also gebe ich meinen Schuss:

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

1

Mit der Zip-Funktion können wir sowohl Element als auch Index erhalten.

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 ...

Siehe auch :

Python.org


0

Versuchen Sie es mit itertools.count([n])


2
Ich bin mir nicht sicher, wie Sie count hier verwenden würden. Mit Count werden Zahlenfolgen generiert.
Codie CodeMonkey

aber wie würde es den Wert für die nächste Iteration zurücksetzen. Die Verwendung von itertools.count () ist hier nicht möglich.
Javed
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.