2015-04-30 4 views
1

У меня часто есть длительные этапы обработки, которые происходят в цикле. Следующий метод - это то, как я отслеживаю, где находится обработка. Есть ли более элегантный, Pythonic способ подсчета обрабатываемых данных во время работы скрипта?Есть ли элегантный, Pythonic способ подсчета обработанных данных?


n_items = [x for x in range(0,100)] 

counter = 1 
for r in n_items: 
    # Perform some time consuming task... 
    print "%s of %s items have been processed" % (counter, len(n_items)) 
    counter = counter + 1 
+0

Я не вижу ничего плохого в приближении счетчика. – bosnjak

+2

'counter + = 1' возможно? – Blusky

ответ

5

Да, enumerate был построен для этого:

for i,r in enumerate(n_items,1): 
    # Perform some time consuming task 
    print('{} of {} items have been processed'.format(i, len(n_items))) 

Второй аргумент определяет начальное значение i, которое 0 по умолчанию.

+2

Передача 1 в качестве второго аргумента. –

+0

Это хорошая альтернатива. Синтаксис должен быть следующим: 'print '{} из {} элементов обработано'.format (i, len (n_items))' – Borealis

+0

Синтаксис 'print', который я дал, является обязательным в Python 3, а также должен быть действительным в Python 2. – Marein

Смежные вопросы