Получить количество циклов внутри цикла 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), чтобы получить количество итераций до сих пор?

greye
источник
1
Вам также могут быть интересны ответы на итерации по списку в виде кусков: stackoverflow.com/questions/434287/…
Дейв Бахер,
4
Возможный дубликат доступа к индексу в Python для циклов
Сиро Сантилли 法轮功 冠状 病 六四 事件 法轮功

Ответы:

586

Питонический способ заключается в использовании enumerate:

for idx,item in enumerate(list):
Ник Бастин
источник
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])
hephestos
источник
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 () здесь невозможно.
Джавед