Uzyskaj liczbę pętli w pętli FOR języka Python


259

W forpętli Python, która iteruje po liście, możemy napisać:

for item in list:
    print item

i starannie przechodzi przez wszystkie elementy na liście. Czy istnieje sposób, aby wiedzieć w pętli, ile razy zapętlałem do tej pory? Na przykład chcę wziąć listę, a po przetworzeniu dziesięciu elementów chcę coś z nimi zrobić.

Alternatywy, o których myślałem, to coś w stylu:

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

Lub:

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

Czy istnieje lepszy sposób (tak jak ten for item in list), aby uzyskać jak dotąd liczbę iteracji?


1
Możesz być także zainteresowany odpowiedziami na iterację po liście w częściach: stackoverflow.com/questions/434287/…
Dave Bacher

Odpowiedzi:



86

Zgadzam się z Nickiem. Oto bardziej rozbudowany kod.

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

Skomentowałem zmienną count w twoim kodzie.


9
Możesz również użyć parametru enumerateopcjonalnego start, aby rozpocząć wyliczanie z 1 zamiast 0, chociaż wtedy użyłbym nazwy OP countzamiast idx.
Stefan Pochmann

Nie miałem pojęcia, że ​​istnieje opcjonalny parametr początkowy. Dobrze wiedzieć. Dzięki
Vikram Garg,

1

Znam raczej stare pytanie, ale .... natknąłem się na coś innego, więc daję szansę:

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

1

Za pomocą funkcji zip możemy uzyskać zarówno element, jak i indeks.

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

Zobacz też :

Python.org


0

Spróbuj użyć itertools.count([n])


2
Nie jestem pewien, jak byś się tutaj liczył. Liczba służy do generowania sekwencji liczb.
Codie CodeMonkey

ale jak zresetuje wartość dla następnej iteracji. Użycie itertools.count () jest tutaj niemożliwe.
Javed
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.