366

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?

1

3 Answers 3

806

The pythonic way is to use enumerate:

for idx, item in enumerate(my_list):
Sign up to request clarification or add additional context in comments.

2 Comments

Super duper , Just one magic line solving all problems
Phenomenal answer, I always come back to copy this line
127

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.

1 Comment

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.
4

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

1 Comment

The PEP you mentioned was rejected in favor of the enumerate() function

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.