May 18, 2023 4 min read

Python Enumerate Function

Learn the basics of Python Enumerate Function with our tutorial. It efficiently iterates over sequences, tracking element positions.

Python Enumerate Function
Table of Contents


Before we begin talking about the basics of Python Enumerate Function, let's briefly understand – What is Python Enumerate Function?

The Python enumerate() function is a handy built-in function that allows you to loop over an iterable object while keeping track of the index or position of each item. It adds a counter to an iterable, returning an enumerate object that contains tuples of both the index and the corresponding item.

This function simplifies the code by providing an elegant way to iterate over sequences and access their elements along with their positions. With Python enumerate(), you can easily enhance your programs' readability and maintainability.

Advantages of Python Enumerate Function

  1. Simplifies Iteration: Python enumerate() simplifies the process of iterating over a sequence while keeping track of the index or position of each item.
  2. Easy Access to Index: It provides a convenient way to access the index or position of each element in the iterable.
  3. Enhanced Readability: The use of enumerate() improves code readability by making it clear that both the index and element are needed.
  4. Code Conciseness: With enumerate(), you can achieve the same result with fewer lines of code compared to traditional iteration methods.
  5. Efficient and Elegant: The enumerate() function offers an efficient and elegant solution for iterating and managing the index of elements in Python programs.

Python enumerate() Function

The syntax for the enumerate() function is as follows:

enumerate(iterable, start=0)

The function takes two arguments:

  • iterable - An object that facilitates iteration.
  • start - This is an optional argument that denotes the number from which the counter starts. The counter is set to start from 0 by default.

You may call the __next__() (or next() in Python 2) function on the enumerate object that enumerate() returns to get a tuple containing a count and the current value of the iterable.

enumerate() provides an enumerate object, on which you may call the next() (or next() in Python 2) function to retrieve a tuple containing a count and the current value of the iterable.

Using list() to create a list of tuples and looping over an iterable are demonstrated in the following example:

directions = ["north", "east", "south", "west"] 

for index, value in enumerate(directions): 
    print("{}: {}".format(index, value))

[(0, 'north'), (1, 'east'), (2, 'south'), (3, 'west')]

0: north
1: east
2: south
3: west

Choose a different starting index for the enumeration if the zero-based indexing is not effective for you:

directions = ["north", "east", "south", "west"] 
list(enumerate(directions, 1))

[(1, 'north'), (2, 'east'), (3, 'south'), (4, 'west')]

The enumerate() function can be applied to any iterable object. A container that can be iterated over is called an iterable. To put it simply, it refers to an object that can be looped over with a for loop. The majority of Python's built-in objects, such as strings, lists, and tuples, are iterables.

Write More Pythonic Code with enumerate()

Unlike the conventional C-style for loop that is found in many programming languages, the for loop in Python is completely different. Python's for loop is equivalent to the foreach loop in other programming languages.

When working with iterables, beginner Python programmers frequently use the range(len(...)) pattern or set and increment a counter to obtain the corresponding index:

planets = ["Mercury", "Venus", "Earth", "Mars", "Jupiter", "Saturn", "Uranus", "Neptune"]
for i in range(len(planets)):
    print("Planet {}: {}".format(i, planets[i]))
planets = ["Mercury", "Venus", "Earth", "Mars", "Jupiter", "Saturn", "Uranus", "Neptune"]
i = 0
for planet in planets:
    print("Planet {}: {}".format(i, planet))
    i += 1

Using enumerate(), the loops shown before can be rewritten in a more conventional way:

planets = ["Mercury", "Venus", "Earth", "Mars", "Jupiter", "Saturn", "Uranus", "Neptune"]
for index, value in enumerate(planets): 
    print("Planet {}: {}".format(index, value))

Each approach will produce the same result:


Planet 0: Mercury
Planet 1: Venus
Planet 2: Earth
Planet 3: Mars
Planet 4: Jupiter
Planet 5: Saturn
Planet 6: Uranus
Planet 7: Neptune

FAQs About Python Enumerate Function

What is the default start value for the counter in enumerate()?

By default, the counter starts from 0. However, you can specify a different start value by passing it as the second argument to enumerate().

Can I use enumerate() with other iterable objects besides lists?

Absolutely! You can use enumerate() with any iterable object, including strings, tuples, sets, and dictionaries.

How does Python enumerate() improve code readability?

By using enumerate(), you explicitly indicate that both the index and element are required, making the code more readable and self-explanatory.

Does the Python enumerate() function modify the original iterable?

No, enumerate() does not modify the original iterable. It simply adds a counter and returns an enumerate object.

Can I change the order of the index and element in the output of enumerate()?

Yes, you can change the order by swapping the variables in the assignment statement, such as for item, i in enumerate(my_list): print(item, i).

Are there alternatives to using the Python enumerate() function?

Yes, you can achieve similar results using traditional iteration with a counter variable, but using enumerate() makes the code more concise and readable.


In this tutorial, you have learned how to use Python’s enumerate() function.

If you have any queries, please leave a comment below, and we’ll be happy to respond to them.

Great! You’ve successfully signed up.
Welcome back! You've successfully signed in.
You've successfully subscribed to DevOps Tutorials - VegaStack.
Your link has expired.
Success! Check your email for magic link to sign-in.
Success! Your billing info has been updated.
Your billing was not updated.