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?

grau
quelle
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:

586

Der pythonische Weg ist zu verwenden enumerate:

for idx,item in enumerate(list):
Nick Bastin
quelle
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.

Vikram Garg
quelle
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])
Hephestos
quelle
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

Muhammad Faizan Fareed
quelle
0

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

Oso
quelle
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