Bird
Raised Fist0
Pythonprogramming~5 mins

Lambda with filter() in Python - Time & Space Complexity

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
Time Complexity: Lambda with filter()
O(n)
Understanding Time Complexity

When using lambda functions with filter(), it's important to know how the program's running time changes as the input list grows.

We want to find out how many times the filter checks each item as the list gets bigger.

Scenario Under Consideration

Analyze the time complexity of the following code snippet.

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
filtered = list(filter(lambda x: x % 2 == 0, numbers))
print(filtered)

This code filters out even numbers from a list using a lambda function inside filter().

Identify Repeating Operations

Identify the loops, recursion, array traversals that repeat.

  • Primary operation: The filter function applies the lambda check to each item in the list.
  • How many times: Once for every item in the input list.
How Execution Grows With Input

As the list gets bigger, the number of checks grows directly with the number of items.

Input Size (n)Approx. Operations
1010 checks
100100 checks
10001000 checks

Pattern observation: The number of operations grows in a straight line with the input size.

Final Time Complexity

Time Complexity: O(n)

This means the time to filter grows evenly as the list gets longer.

Common Mistake

[X] Wrong: "Using lambda with filter() makes the code run faster than a normal loop."

[OK] Correct: Lambda with filter() still checks every item once, so it takes about the same time as a loop.

Interview Connect

Understanding how filter and lambda work together helps you explain how your code handles data efficiently in real projects.

Self-Check

"What if we changed the input from a list to a generator? How would the time complexity change?"

Practice

(1/5)
1. What does the following code do?
filter(lambda x: x > 5, [2, 7, 4, 10])
easy
A. Selects numbers greater than 5 from the list
B. Selects numbers less than 5 from the list
C. Returns the sum of numbers greater than 5
D. Sorts the list in ascending order

Solution

  1. Step 1: Understand the lambda condition

    The lambda function checks if each number is greater than 5.
  2. Step 2: Apply filter with the lambda

    filter() keeps only numbers where the lambda returns True, so numbers > 5.
  3. Final Answer:

    Selects numbers greater than 5 from the list -> Option A
  4. Quick Check:

    filter with lambda x > 5 = select numbers > 5 [OK]
Hint: filter + lambda picks items where condition is True [OK]
Common Mistakes:
  • Thinking filter sums or sorts the list
  • Confusing greater than with less than
  • Assuming filter changes the original list
2. Which of these is the correct syntax to filter even numbers from a list nums using lambda and filter?
easy
A. filter(lambda x: x % 2 == 0, nums)
B. filter(lambda x: x // 2 == 0, nums)
C. filter(lambda x: x % 2, nums)
D. filter(lambda x: x == 2, nums)

Solution

  1. Step 1: Identify condition for even numbers

    Even numbers have zero remainder when divided by 2, so x % 2 == 0.
  2. Step 2: Check filter syntax

    filter(lambda x: x % 2 == 0, nums) correctly filters even numbers.
  3. Final Answer:

    filter(lambda x: x % 2 == 0, nums) -> Option A
  4. Quick Check:

    Even check = x % 2 == 0 [OK]
Hint: Use x % 2 == 0 to check even numbers [OK]
Common Mistakes:
  • Using floor division (//) instead of modulo (%)
  • Using x % 2 without comparison (filters odd numbers)
  • Checking equality to 2 instead of remainder zero
3. What is the output of this code?
nums = [1, 3, 6, 8, 11]
result = list(filter(lambda x: x < 7, nums))
print(result)
medium
A. [7, 8, 11]
B. [6, 8, 11]
C. [1, 3, 6, 8]
D. [1, 3, 6]

Solution

  1. Step 1: Understand the filter condition

    The lambda keeps numbers less than 7.
  2. Step 2: Apply condition to each list item

    1 < 7 (keep), 3 < 7 (keep), 6 < 7 (keep), 8 < 7 (no), 11 < 7 (no).
  3. Final Answer:

    [1, 3, 6] -> Option D
  4. Quick Check:

    Filter x < 7 = [1, 3, 6] [OK]
Hint: Filter keeps items where lambda returns True [OK]
Common Mistakes:
  • Including numbers not meeting condition
  • Confusing less than with greater than
  • Not converting filter object to list before printing
4. Find the error in this code snippet:
nums = [10, 15, 20]
filtered = filter(lambda x: x % 2 = 0, nums)
print(list(filtered))
medium
A. Incorrect list conversion syntax
B. Missing parentheses after filter
C. Using '=' instead of '==' in lambda condition
D. Lambda function missing argument

Solution

  1. Step 1: Check lambda condition syntax

    The condition uses '=' which is assignment, not comparison.
  2. Step 2: Correct operator usage

    It should be '==' to compare if x % 2 equals 0.
  3. Final Answer:

    Using '=' instead of '==' in lambda condition -> Option C
  4. Quick Check:

    Comparison needs '==' not '=' [OK]
Hint: Use '==' for comparison inside lambda [OK]
Common Mistakes:
  • Using '=' instead of '==' in conditions
  • Forgetting to convert filter result to list
  • Missing lambda argument
5. You have a list of words: words = ['apple', '', 'banana', ' ', 'cherry', None]. Which code correctly filters out empty strings, strings with only spaces, and None values using lambda and filter?
hard
A. list(filter(lambda x: x == '', words))
B. list(filter(lambda x: x and x.strip(), words))
C. list(filter(lambda x: x is None, words))
D. list(filter(lambda x: x.strip() == '', words))

Solution

  1. Step 1: Understand filtering criteria

    We want to remove empty strings (''), strings with only spaces (' '), and None values.
  2. Step 2: Analyze each option

    list(filter(lambda x: x and x.strip(), words)) checks x is truthy (not None or empty) and x.strip() removes spaces; if non-empty after strip, it keeps the word.
  3. Final Answer:

    list(filter(lambda x: x and x.strip(), words)) -> Option B
  4. Quick Check:

    Filter removes empty, spaces, None with x and x.strip() [OK]
Hint: Use x and x.strip() to remove empty/space/None [OK]
Common Mistakes:
  • Filtering only empty strings but not spaces or None
  • Checking equality to None incorrectly
  • Calling strip() on None causing error