Получить количество циклов внутри цикла 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.