Bird
Raised Fist0
Pythonprogramming~20 mins

enumerate() function in Python - Practice Problems & Coding Challenges

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Challenge - 5 Problems
๐ŸŽ–๏ธ
Enumerate Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
โ“ Predict Output
intermediate
2:00remaining
Output of enumerate with start index
What is the output of this Python code?
Python
items = ['apple', 'banana', 'cherry']
result = list(enumerate(items, start=1))
print(result)
A[(0, 'apple'), (1, 'banana'), (2, 'cherry')]
B[(1, 'apple'), (2, 'banana'), (3, 'cherry')]
C[(1, 'apple'), (1, 'banana'), (1, 'cherry')]
D[(0, 'apple'), (0, 'banana'), (0, 'cherry')]
Attempts:
2 left
๐Ÿ’ก Hint
Remember that enumerate can start counting from any number you choose.
โ“ Predict Output
intermediate
2:00remaining
Using enumerate in a for loop
What will this code print?
Python
colors = ['red', 'green', 'blue']
for i, color in enumerate(colors):
    if i == 2:
        print(color)
Ablue
Bgreen
Cred
DIndexError
Attempts:
2 left
๐Ÿ’ก Hint
The loop prints the color when the index is 2.
๐Ÿง  Conceptual
advanced
2:00remaining
Behavior of enumerate on empty iterable
What is the result of converting enumerate([]) to a list?
A[(1, None)]
B[(0, None)]
C[]
DTypeError
Attempts:
2 left
๐Ÿ’ก Hint
Think about what happens when you enumerate over an empty list.
โ“ Predict Output
advanced
2:00remaining
Output of enumerate with tuple unpacking
What does this code print?
Python
data = ['a', 'b', 'c']
for index, value in enumerate(data, 5):
    if index == 6:
        print(value)
Aa
BIndexError
Cc
Db
Attempts:
2 left
๐Ÿ’ก Hint
The start index is 5, so the first item has index 5.
โ“ Predict Output
expert
2:00remaining
Effect of modifying list during enumerate
What happens when you run this code?
Python
lst = [10, 20, 30]
for i, val in enumerate(lst):
    if val == 20:
        lst.append(40)
print(len(lst))
A4
B3
CRuntimeError
DInfinite loop
Attempts:
2 left
๐Ÿ’ก Hint
Think about how enumerate works with the list size changing during iteration.

Practice

(1/5)
1. What does the enumerate() function do in Python?
easy
A. It counts how many items are in a list.
B. It sorts the items in a list alphabetically.
C. It reverses the order of items in a list.
D. It returns both the index and the value of items in a list during a loop.

Solution

  1. Step 1: Understand the purpose of enumerate()

    The enumerate() function adds a counter to an iterable and returns it as an enumerate object.
  2. Step 2: Identify what is returned during looping

    When looping, it gives both the index (position) and the value of each item.
  3. Final Answer:

    It returns both the index and the value of items in a list during a loop. -> Option D
  4. Quick Check:

    enumerate() = index + value [OK]
Hint: Remember: enumerate() pairs index with value [OK]
Common Mistakes:
  • Thinking enumerate() sorts the list
  • Assuming it only counts items
  • Believing it reverses the list
2. Which of the following is the correct syntax to use enumerate() in a for loop?
easy
A. for index in enumerate(list):
B. for value, index in enumerate(list):
C. for index, value in enumerate(list):
D. for value in enumerate(list):

Solution

  1. Step 1: Recall the unpacking order of enumerate()

    enumerate() returns pairs of (index, value), so the loop variables must match this order.
  2. Step 2: Match the correct variable order in the for loop

    The correct syntax is for index, value in enumerate(list): to unpack both index and value properly.
  3. Final Answer:

    for index, value in enumerate(list): -> Option C
  4. Quick Check:

    Index comes first, then value [OK]
Hint: Index always comes before value in enumerate() [OK]
Common Mistakes:
  • Swapping index and value order
  • Using only one variable to unpack both
  • Forgetting to unpack both values
3. What is the output of this code?
fruits = ['apple', 'banana', 'cherry']
for i, fruit in enumerate(fruits, start=1):
    print(i, fruit)
medium
A. 1 apple 2 banana 3 cherry
B. 0 apple 1 banana 2 cherry
C. apple 0 banana 1 cherry 2
D. apple 1 banana 2 cherry 3

Solution

  1. Step 1: Understand the start parameter in enumerate()

    The start=1 means counting begins at 1 instead of the default 0.
  2. Step 2: Trace the loop output

    Loop prints index and fruit: 1 apple, 2 banana, 3 cherry.
  3. Final Answer:

    1 apple 2 banana 3 cherry -> Option A
  4. Quick Check:

    start=1 shifts index to 1 [OK]
Hint: Check start value to know index numbering [OK]
Common Mistakes:
  • Assuming index starts at 0 despite start=1
  • Mixing up index and value order in print
  • Ignoring the start parameter
4. Find the error in this code snippet:
items = ['pen', 'pencil', 'eraser']
for value, index in enumerate(items):
    print(index, value)
medium
A. There is no error; the code runs fine.
B. The variables in the for loop are reversed; index should come first.
C. The print statement syntax is incorrect.
D. enumerate() cannot be used with lists.

Solution

  1. Step 1: Check the order of variables unpacked from enumerate()

    enumerate() returns (index, value), so the first variable must be index.
  2. Step 2: Identify the mistake in variable order

    The code uses value, index which is reversed and causes incorrect unpacking.
  3. Final Answer:

    The variables in the for loop are reversed; index should come first. -> Option B
  4. Quick Check:

    Index always first in enumerate() unpacking [OK]
Hint: Index comes before value in enumerate() unpacking [OK]
Common Mistakes:
  • Swapping index and value variables
  • Thinking enumerate() can't be used with lists
  • Misreading the error as print syntax
5. You have a list of names: 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()?
hard
A. for i, name in enumerate(names, start=1): if name: print(i, name)
B. for i, name in enumerate(names): if name != '': print(i, name)
C. for i, name in enumerate(names, start=0): if name: print(i, name)
D. for i, name in enumerate(names, start=1): if name == '': print(i, name)

Solution

  1. Step 1: Indexing starting at 1

    Use enumerate(names, start=1) to get positions starting from 1: 1 Anna, 2 Bob, 3 (empty), 4 Diana.
  2. Step 2: Skip empty names

    Use if name: since empty string '' is falsy in Python.
  3. Final Answer:

    for i, name in enumerate(names, start=1): if name: print(i, name) -> Option A
  4. Quick Check:

    start=1 + if name skips empty [OK]
Hint: Use start=1 and if name to skip empty strings [OK]
Common Mistakes:
  • Forgetting to start counting at 1
  • Printing empty strings
  • Not adjusting index when using default start=0