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?


1
Você também pode estar interessado nas respostas a iteração sobre uma lista em pedaços: stackoverflow.com/questions/434287/...
Dave Bacher

Respostas:



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.


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])

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


0

Tente usar itertools.count([n])


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.