Отримайте кількість циклів всередині циклу 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'

Я прокоментував змінну підрахунку у вашому коді.


9
Ви також можете скористатися enumerateдодатковим startпараметром, щоб почати перераховувати 1, а не 0, хоча тоді я б використовував ім'я ОП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
Я не впевнений, як ви тут використовуєте рахунок. Графа використовується для генерації послідовностей чисел.
Codie CodeMonkey

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