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?

greye
źródło
1
Możesz być także zainteresowany odpowiedziami na iterację po liście w częściach: stackoverflow.com/questions/434287/…
Dave Bacher
4
możliwy duplikat dostępu do indeksu w Pythonie dla pętli
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

Odpowiedzi:

586

Pythonowym sposobem jest użycie enumerate:

for idx,item in enumerate(list):
Nick Bastin
źródło
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.

Vikram Garg
źródło
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])
hephestos
źródło
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

Muhammad Faizan Fareed
źródło
0

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

Oso
źródło
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