Open In App
Related Articles

Python – Itertools.count()

Improve Article
Save Article
Like Article

Python Itertools are a great way of creating complex iterators which helps in getting faster execution time and writing memory-efficient code. Itertools provide us with functions for creating infinite sequences and itertools.count() is one such function and it does exactly what it sounds like, it counts!

Note: For more information, refer to Python Itertools


itertools.count() are generally used with map() to generate consecutive data points which is useful in when working with data. It can also be used with zip to add sequences by passing count as parameter.

Syntax: itertools.count(start=0, step=1)

start: Start of the sequence (defaults to 0)
step: Difference between consecutive numbers (defaults to 1)

Returns: Returns a count object whose .__next__() method returns consecutive values.

Let us get a deep understanding of this mighty sword using some simple Python programs.

Example #1: Creating evenly spaced list of numbers
itertools.count() can be used to generate infinite recursive sequences easily. Lets have a look

# Program for creating a list of
# even and odd list of integers
# using count()
from itertools import count
# creates a count iterator object
iterator =(count(start = 0, step = 2))
# prints a odd list of integers
print("Even list:"
      list(next(iterator) for _ in range(5)))
# creates a count iterator object
iterator = (count(start = 1, step = 2))
# prints a odd list of integers
print("Odd list:"
      list(next(iterator) for _ in range(5)))

Output :

Even list: [0, 2, 4, 6, 8]
Odd list: [1, 3, 5, 7, 9]

In the same way, we can also generate a sequence of negative and floating-point numbers. For better accuracy of floating-point numbers use (start + step * i for i in count()).

Example #2: Emulating enumerate() using itertools.count()
As mentioned earlier, count() can be used with zip(). Let’s see how can we use it to mimic the functionality of enumerate() without even knowing the length of list beforehand!

# Program to emulate enumerate() 
# using count()
# list containing some strings
my_list =["Geeks", "for", "Geeks"]
# count spits out integers for 
# each value in my list
for i in zip(count(start = 1
                   step = 1), my_list):
    # prints tuple in an enumerated 
    # format

Output :

(1, 'Geeks')
(2, 'for')
(3, 'Geeks')

Note: Extra care must be taken while using itertools.count() as it is easy to get stuck in an infinite loop.

The following code functions the same as while True: thus proper termination condition must be specified.

for i in count(start=0, step=2): 

Whether you're preparing for your first job interview or aiming to upskill in this ever-evolving tech landscape, GeeksforGeeks Courses are your key to success. We provide top-quality content at affordable prices, all geared towards accelerating your growth in a time-bound manner. Join the millions we've already empowered, and we're here to do the same for you. Don't miss out - check it out now!

Last Updated : 01 Mar, 2020
Like Article
Save Article
Similar Reads
Complete Tutorials