Nested lists in Python - Time & Space Complexity
Start learning this pattern below
Jump into concepts and practice - no test required
When working with nested lists, it is important to understand how the time to process them grows as the lists get bigger.
We want to know how the number of steps changes when we look inside lists within lists.
Analyze the time complexity of the following code snippet.
nested = [[1, 2, 3], [4, 5], [6, 7, 8, 9]]
for inner_list in nested:
for item in inner_list:
print(item)
This code goes through each small list inside a bigger list and prints every item.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: The inner loop that visits each item in every small list.
- How many times: Once for each item inside all the nested lists combined.
As the total number of items inside all nested lists grows, the time to print them grows roughly the same way.
| Input Size (total items) | Approx. Operations |
|---|---|
| 10 | About 10 prints |
| 100 | About 100 prints |
| 1000 | About 1000 prints |
Pattern observation: The time grows directly with the total number of items inside all nested lists.
Time Complexity: O(n)
This means the time grows in a straight line with the total number of items inside the nested lists.
[X] Wrong: "Because there are two loops, the time must be squared, like O(n²)."
[OK] Correct: The inner loop runs over smaller lists whose total items add up to n, so the loops together still visit each item once, not n times n.
Understanding how nested lists affect time helps you explain your code clearly and shows you can think about how programs grow with data size.
"What if the inner lists were replaced by dictionaries? How would the time complexity change when iterating over all items?"
Practice
Solution
Step 1: Understand list elements
A list can hold many types of elements, including other lists.Step 2: Define nested list
A nested list is a list where some elements are themselves lists.Final Answer:
A list that contains other lists as its elements -> Option BQuick Check:
Nested list = list inside list [OK]
- Confusing nested list with single-level list
- Thinking nested list is immutable
- Assuming nested list holds only numbers
Solution
Step 1: Identify nested list syntax
A nested list has lists inside the main list, each enclosed in brackets.Step 2: Check options
[[1, 2], [3, 4]] has two inner lists: [1, 2] and [3, 4], correctly nested.Final Answer:
[[1, 2], [3, 4]] -> Option AQuick Check:
Two inner lists = double brackets [OK]
- Using single brackets only
- Mixing elements and lists incorrectly
- Missing commas between inner lists
matrix = [[1, 2], [3, 4]] print(matrix[1][0])
Solution
Step 1: Access outer list element
matrix[1] accesses the second inner list: [3, 4].Step 2: Access inner list element
matrix[1][0] accesses the first element of [3, 4], which is 3.Final Answer:
3 -> Option AQuick Check:
matrix[1][0] = 3 [OK]
- Mixing up indexes (using [0][1] instead)
- Forgetting zero-based indexing
- Confusing inner and outer list positions
data = [[1, 2], [3, 4]] print(data[2][0])
Solution
Step 1: Check list length
data has two elements: indexes 0 and 1 only.Step 2: Accessing invalid index
data[2] tries to access a third element which does not exist, causing IndexError.Final Answer:
IndexError because data[2] does not exist -> Option DQuick Check:
Index out of range = IndexError [OK]
- Assuming index 2 exists
- Confusing syntax error with runtime error
- Ignoring zero-based indexing
nums = [[1, 2, 3], [4, 5], [6]], which code correctly prints all elements in order?Solution
Step 1: Understand nested iteration
To print all elements, loop over each inner list, then each element inside it.Step 2: Analyze options
for sublist in nums: for num in sublist: print(num) uses two loops: outer for sublist, inner for num, printing each number.Final Answer:
for sublist in nums: for num in sublist: print(num) -> Option CQuick Check:
Nested loops print all elements [OK]
- Printing inner lists instead of elements
- Using single loop only
- Hardcoding indexes without loops
