Skip to main content

How to Count in For and While Loops in Python

Keeping track of iterations or counts within loops is a common task in programming.

This guide explores various methods for counting in for and while loops in Python, including using enumerate(), manual counting, using range(), and counting iterations in while loops.

Counting in for Loops with enumerate()

The enumerate() function provides a concise and Pythonic way to count iterations in a for loop by providing access to both the index and the value of each item from the iterable:

my_list = ['a', 'b', 'c']

for index, item in enumerate(my_list):
print(index, item) # Output: 0 a, 1 b, 2 c
  • enumerate(my_list) returns an iterator that yields pairs of (index, item) for each item in the list.
  • You can directly unpack the index (the count) and item in the for loop.

Starting from a Different Number

By default, enumerate() starts counting from 0. To start from a different number, use the start argument:

my_list = ['a', 'b', 'c']
for count, item in enumerate(my_list, start=1):
print(count, item) # Output: 1 a, 2 b, 3 c

Counting Manually in for Loops

While enumerate is preferred you can also manually manage a counter variable if you need to count in a for loop:

my_list = ['a', 'b', 'c']

count = 0 # Initialize counter
for item in my_list:
count += 1 # Increment counter
print(count) # Output: 1, 2, 3
print(count) # Output: 3

  • You have to increment the counter in every iteration of the for loop.

Counting in for Loops with range()

The range(len(iterable)) method can be used with a for loop to iterate through all of the indexes of an iterable. Then in every iteration you can use the current index to access the element at that index.

a_list = ['tutorial', 'reference', 'com']

for index in range(len(a_list)):
print(index, a_list[index]) # Output: 0 tutorial, 1 reference, 2 com
  • The range(len(a_list)) generates a sequence from 0 to len(a_list) - 1.
  • In every iteration you have access to the index index so you can access the value from the list using a_list[index].
note

enumerate() is generally preferred when iterating over list elements, as it directly provides both index and value without explicit indexing.

Counting in while Loops

To count in a while loop, initialize a counter before the loop and increment it within the loop:

count = 0
max_count = 5
while count < max_count:
count += 1
print(count) # Output: 1 2 3 4 5
  • The while loop keeps running until count becomes equal to or greater than max_count.

Counting while Loop Iterations

You can use a counter to track the number of iterations in more complex while loops:

count = 0
my_list = ['tutorial', 'reference', 'com']

while len(my_list) > 0:
my_list.pop()
count += 1
print(count) # Output: 1, 2, 3
print(count) # Output: 3
  • The count variable keeps track of how many times the loop's body has been executed.