According to the Python documentation, the enumerate
function is a built in function that returns an enumerate object. Another popular article on the subject describes it as a function that allows you to “generate iterator element along with index”. I find these two definitions unclear. Here’s an explanation that makes more sense: the enumerate function allows you to iterate through a list or sequence whilst keeping track of the indexes of the elements. In other words, enumerate adds a counter to an iterable.
Syntax
The syntax of enumerate()
is:
[sourcecode lang=”python”]
enumerate(sequence, start=0)
[/sourcecode]
The sequence
parameter must be a sequence such as a string, a tuple or a list, an iterator or some other object which supports iteration.
The start
parameter allows us to tell enumerate()
where to start the index or counter.
Example: How enumerate works in Python
[sourcecode lang=”python”]
names = [‘Bob’, ‘Alice’, ‘Spencer’, ‘Mark’, ‘Jane’]
>>> for index, name in enumerate(names):
… print index, name
0 Bob
1 Alice
2 Spencer
3 Mark
4 Jane
>>> for index, name in enumerate(names, start=1):
… print index, name
1 Bob
2 Alice
3 Spencer
4 Mark
5 Jane
[/sourcecode]
Using enumerate to print the index of an element is similar to doing this:
[sourcecode lang=”python”]
>>> for i in range(len(names)):
… name = names[i]
… print i + 1, name,
1 Bob
2 Alice
3 Spencer
4 Mark
5 Jane
[/sourcecode]
I prefer using enumerate
because it’s a built in and it looks more pythonic. I have found the enumerate()
function incredibly useful when working with nested for
loops and also when going through data arranged in a grid-like format like Spreadsheets. This Quora thread discusses some of the reasons why you would want to use enumerate
.
That is all for this week. Thanks for reading.