Obter contagem de loop dentro de um loop FOR do Python

259

Em um forloop Python que itera sobre uma lista, podemos escrever:

for item in list:
    print item

e detalhadamente percorre todos os elementos da lista. Existe uma maneira de saber dentro do loop quantas vezes eu já fiz loop até agora? Por exemplo, quero fazer uma lista e depois de processar dez elementos, quero fazer algo com eles.

As alternativas em que pensei seria algo como:

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 uma maneira melhor (assim como a for item in list) de obter o número de iterações até agora?

cinza
fonte
1
Você também pode estar interessado nas respostas a iteração sobre uma lista em pedaços: stackoverflow.com/questions/434287/...
Dave Bacher
4
possível duplicado de Acesso ao índice em Python para loops
Ciro Santilli郝海东冠状病六四事件法轮功

Respostas:

586

A maneira pitônica é usar enumerate:

for idx,item in enumerate(list):
Nick Bastin
fonte
86

Concordo com Nick. Aqui está um código mais elaborado.

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

Eu comentei a variável count no seu código.

Vikram Garg
fonte
9
Você também pode usar enumerateo startparâmetro opcional de para começar a enumerar com 1 em vez de 0, embora eu usasse o nome do OP em countvez de idx.
Stefan Pochmann
Eu não tinha idéia de que existe um parâmetro de início opcional. Bom saber. Obrigado
Vikram Garg
1

Eu sei pergunta bastante antiga, mas .... me deparei procurando outra coisa, então eu dou o meu tiro:

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

Usando a função zip, podemos obter o elemento e o índice.

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

Veja também :

Python.org

Muhammad Faizan Fareed
fonte
0

Tente usar itertools.count([n])

Oso
fonte
2
Não tenho certeza de como você usaria a contagem aqui. Count é usado para gerar seqüências de números.
Codie CodeMonkey
mas como redefiniria o valor para a próxima iteração. Usar itertools.count () não é viável aqui.
Javed