enumerate() function in Python - Time & Space Complexity
Start learning this pattern below
Jump into concepts and practice - no test required
We want to understand how long it takes to run code that uses the enumerate() function.
Specifically, we ask: how does the time grow when the list we use enumerate() on gets bigger?
Analyze the time complexity of the following code snippet.
items = ['apple', 'banana', 'cherry', 'date']
for index, value in enumerate(items):
print(f"{index}: {value}")
This code goes through each item in the list and prints its position and value.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Looping through each item in the list once.
- How many times: Exactly once for each item in the list.
As the list gets bigger, the code runs longer because it visits each item once.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | About 10 times |
| 100 | About 100 times |
| 1000 | About 1000 times |
Pattern observation: The time grows directly with the number of items. Double the items, double the work.
Time Complexity: O(n)
This means the time to finish grows in a straight line with the number of items.
[X] Wrong: "Using enumerate() makes the code slower because it adds extra work."
[OK] Correct: enumerate() just keeps track of the position while looping, which is done in the same pass, so it does not add extra loops or slow down the code noticeably.
Understanding how simple loops like those with enumerate() scale helps you explain your code clearly and shows you know how to think about efficiency.
"What if we nested another loop inside that uses enumerate() on the same list? How would the time complexity change?"
Practice
enumerate() function do in Python?Solution
Step 1: Understand the purpose of enumerate()
Theenumerate()function adds a counter to an iterable and returns it as an enumerate object.Step 2: Identify what is returned during looping
When looping, it gives both the index (position) and the value of each item.Final Answer:
It returns both the index and the value of items in a list during a loop. -> Option DQuick Check:
enumerate() = index + value [OK]
- Thinking enumerate() sorts the list
- Assuming it only counts items
- Believing it reverses the list
enumerate() in a for loop?Solution
Step 1: Recall the unpacking order of enumerate()
enumerate() returns pairs of (index, value), so the loop variables must match this order.Step 2: Match the correct variable order in the for loop
The correct syntax isfor index, value in enumerate(list):to unpack both index and value properly.Final Answer:
for index, value in enumerate(list): -> Option CQuick Check:
Index comes first, then value [OK]
- Swapping index and value order
- Using only one variable to unpack both
- Forgetting to unpack both values
fruits = ['apple', 'banana', 'cherry']
for i, fruit in enumerate(fruits, start=1):
print(i, fruit)Solution
Step 1: Understand the start parameter in enumerate()
Thestart=1means counting begins at 1 instead of the default 0.Step 2: Trace the loop output
Loop prints index and fruit: 1 apple, 2 banana, 3 cherry.Final Answer:
1 apple 2 banana 3 cherry -> Option AQuick Check:
start=1 shifts index to 1 [OK]
- Assuming index starts at 0 despite start=1
- Mixing up index and value order in print
- Ignoring the start parameter
items = ['pen', 'pencil', 'eraser']
for value, index in enumerate(items):
print(index, value)Solution
Step 1: Check the order of variables unpacked from enumerate()
enumerate() returns (index, value), so the first variable must be index.Step 2: Identify the mistake in variable order
The code usesvalue, indexwhich is reversed and causes incorrect unpacking.Final Answer:
The variables in the for loop are reversed; index should come first. -> Option BQuick Check:
Index always first in enumerate() unpacking [OK]
- Swapping index and value variables
- Thinking enumerate() can't be used with lists
- Misreading the error as print syntax
names = ['Anna', 'Bob', '', 'Diana']. You want to print only non-empty names with their positions starting at 1. Which code correctly does this using enumerate()?Solution
Step 1: Indexing starting at 1
Useenumerate(names, start=1)to get positions starting from 1: 1 Anna, 2 Bob, 3 (empty), 4 Diana.Step 2: Skip empty names
Useif name:since empty string '' is falsy in Python.Final Answer:
for i, name in enumerate(names, start=1): if name: print(i, name) -> Option AQuick Check:
start=1 + if name skips empty [OK]
- Forgetting to start counting at 1
- Printing empty strings
- Not adjusting index when using default start=0
