332

This for loop iterates over all elements in a list:

for item in my_list:
    print item

Is there a way to know within the loop how many times I've been looping so far? For instance, I want to take a list and after I've processed ten elements I want to do something with them.

The alternatives I thought about would be something like:

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

Or:

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

Is there a better way (just like the for item in my_list) to get the number of iterations so far?

Mateen Ulhaq
  • 21,459
  • 16
  • 82
  • 123
greye
  • 8,571
  • 12
  • 39
  • 45

5 Answers5

729

The pythonic way is to use enumerate:

for idx, item in enumerate(my_list):
Mateen Ulhaq
  • 21,459
  • 16
  • 82
  • 123
Nick Bastin
  • 29,060
  • 7
  • 57
  • 76
114

Agree with Nick. Here is more elaborated code.

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

I have commented out the count variable in your code.

Vikram Garg
  • 1,249
  • 1
  • 8
  • 8
  • 13
    You could also use `enumerate`'s optional `start` parameter to start enumerating with 1 instead of 0, though then I'd use the OP's name `count` instead of `idx`. – Stefan Pochmann Oct 07 '17 at 12:36
2

Using zip function we can get both element and index.

countries = ['Pakistan','India','China','Russia','USA']

for index, element in zip(range(0,countries),countries):

         print('Index : ',index)
         print(' Element : ', element,'\n')

output : Index : 0 Element : Pakistan ...

See also :

Python.org

Hans Ginzel
  • 6,784
  • 3
  • 21
  • 22
0

I know rather old question but....came across looking other thing so I give my shot:

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

This is something you can also do to check for the list index. When it hits the list index 9, which is the 10th element of the list, it will print "did ten".

for item in list:
    print item
    if list.index(item) == 9:
        print 'did ten'