Obtener recuento de bucles dentro de un bucle FOR de Python


259

En un forbucle Python que itera sobre una lista, podemos escribir:

for item in list:
    print item

y pasa cuidadosamente por todos los elementos de la lista. ¿Hay alguna manera de saber dentro del bucle cuántas veces he estado haciendo bucles hasta ahora? Por ejemplo, quiero tomar una lista y después de haber procesado diez elementos, quiero hacer algo con ellos.

Las alternativas en las que pensé serían algo como:

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

O:

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

¿Hay una mejor manera (al igual que la for item in list) para obtener el número de iteraciones hasta ahora?


1
También te pueden interesar las respuestas para iterar sobre una lista en fragmentos: stackoverflow.com/questions/434287/…
Dave Bacher

Respuestas:



86

De acuerdo con Nick. Aquí hay un código más 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'

He comentado la variable de conteo en su código.


9
También podría usar enumerateel startparámetro opcional de '' para comenzar a enumerar con 1 en lugar de 0, aunque luego usaría el nombre del OP en countlugar de idx.
Stefan Pochmann

No tenía idea de que hay un parámetro de inicio opcional. Bueno saber. Gracias
Vikram Garg

1

Sé una pregunta bastante antigua, pero ... me encontré buscando otra cosa, así que le doy mi oportunidad:

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

1

Usando la función zip podemos obtener tanto el elemento como el í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 ...

Ver también :

Python.org


0

Intenta usar itertools.count([n])


2
No estoy seguro de cómo usarías Count aquí. Count se usa para generar secuencias de números.
Codie CodeMonkey

pero ¿cómo restablecería el valor para la próxima iteración? Usar itertools.count () no es factible aquí.
Javed
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.