Получить количество циклов внутри цикла Python FOR


259

В forцикле Python, который перебирает список, мы можем написать:

for item in list:
    print item

и он аккуратно проходит через все элементы в списке. Есть ли способ узнать в цикле, сколько раз я зацикливался до сих пор? Например, я хочу взять список, и после обработки десяти элементов я хочу что-то с ними сделать.

Альтернативы, о которых я думал, будут примерно такими:

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

Или:

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

Есть ли лучший способ (так же, как for item in list), чтобы получить количество итераций до сих пор?


1
Вам также могут быть интересны ответы на итерации по списку в виде кусков: stackoverflow.com/questions/434287/…
Дейв Бахер,

Ответы:



86

Согласен с Ником. Вот более сложный код.

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

Я закомментировал переменную count в вашем коде.


9
Вы также можете использовать enumerateнеобязательный startпараметр, чтобы начать перечисление с 1 вместо 0, хотя тогда я бы использовал имя OP countвместо idx.
Стефан Почманн

Я понятия не имел, что есть необязательный параметр запуска. Хорошо знать. Спасибо
Викрам

1

Я знаю довольно старый вопрос, но .... наткнулся на другую вещь, поэтому я даю свой шанс:

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

1

Используя функцию zip, мы можем получить как элемент, так и индекс.

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

Смотрите также :

Python.org


0

Попробуйте использовать itertools.count([n])


2
Я не уверен, как вы использовали бы здесь счет. Счетчик используется для генерации последовательностей чисел.
Коди CodeMonkey

но как бы сбросить значение для следующей итерации. Использование itertools.count () здесь невозможно.
Джавед
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.