map() function in Python - Time & Space Complexity
Start learning this pattern below
Jump into concepts and practice - no test required
We want to understand how the time it takes to run code using the map() function changes as the input list gets bigger.
Specifically, how does the work grow when we apply a function to many items?
Analyze the time complexity of the following code snippet.
def square(x):
return x * x
numbers = [1, 2, 3, 4, 5]
squared = list(map(square, numbers))
print(squared)
This code applies the square function to each number in the list using map() and collects the results.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Applying the
squarefunction to each item in the list. - How many times: Once for each item in the input list.
As the list gets bigger, the number of times we apply the function grows the same way.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | 10 function calls |
| 100 | 100 function calls |
| 1000 | 1000 function calls |
Pattern observation: The work grows directly with the number of items; doubling the list doubles the work.
Time Complexity: O(n)
This means the time to finish grows in a straight line with the number of items you process.
[X] Wrong: "Using map() makes the code run instantly or faster regardless of input size."
[OK] Correct: map() still applies the function to every item, so the time grows with the list size just like a loop would.
Knowing how map() scales helps you explain your code choices clearly and shows you understand how data size affects performance.
"What if the function passed to map() took longer for bigger numbers? How would that affect the time complexity?"
Practice
map() function do in Python?Solution
Step 1: Understand the purpose of
Themap()map()function takes a function and an iterable, then applies the function to each item.Step 2: Identify the return type
It returns a map object, which can be converted to a list to see the results.Final Answer:
Applies a given function to each item of an iterable and returns a map object -> Option DQuick Check:
map()applies function to items [OK]
- Confusing map() with filter()
- Thinking map() returns a list directly
- Assuming map() sorts or combines lists
map() to double each number in the list [1, 2, 3]?Solution
Step 1: Check the order of arguments in
The first argument must be a function, the second an iterable.map()Step 2: Verify the function syntax
Using a lambda function likelambda x: x * 2is correct to double each item.Final Answer:
map(lambda x: x * 2, [1, 2, 3]) -> Option AQuick Check:
Function first, iterable second [OK]
- Swapping function and iterable arguments
- Omitting the iterable argument
- Passing an expression instead of a function
nums = [1, 2, 3, 4] squared = map(lambda x: x**2, nums) print(list(squared))
Solution
Step 1: Understand the lambda function
The lambda function squares each number: x**2.Step 2: Apply map and convert to list
Mapping squares over [1, 2, 3, 4] gives [1, 4, 9, 16]. Converting map object to list shows these values.Final Answer:
[1, 4, 9, 16] -> Option AQuick Check:
Squares of 1 to 4 = [1, 4, 9, 16] [OK]
- Forgetting to convert map object to list
- Confusing square with double
- Expecting map to print directly
nums = [1, 2, 3] result = map(lambda x: x + 1) print(list(result))
Solution
Step 1: Check map() arguments
The map function requires two arguments: a function and an iterable. Here, the iterable is missing.Step 2: Identify the error cause
Without the iterable, map() cannot apply the function, causing a TypeError.Final Answer:
Missing iterable argument in map() -> Option BQuick Check:
map needs function and iterable [OK]
- Forgetting the iterable argument
- Assuming map works with one argument
- Misunderstanding lambda function usage
names = ['alice', 'bob', 'carol'] and ages = [25, 30, 22]. Using map(), how can you create a list of strings like ['alice is 25', 'bob is 30', 'carol is 22']?Solution
Step 1: Understand map with multiple iterables
map can take multiple iterables and pass corresponding items to the function.Step 2: Use lambda with two parameters
The lambda takes name and age, then formats the string using f-string for clarity.Step 3: Convert map object to list
Wrapping with list() shows the final list of formatted strings.Final Answer:
list(map(lambda n, a: f'{n} is {a}', names, ages)) -> Option CQuick Check:
map with multiple iterables and f-string [OK]
- Passing only one iterable when two are needed
- Concatenating string and int without conversion
- Not converting map object to list
