Bird
Raised Fist0
Pythonprogramming~10 mins

Lambda with filter() in Python - Step-by-Step Execution

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
Concept Flow - Lambda with filter()
Start with list
Apply filter()
Use lambda function
Check each item
Keep item
Return filtered list
End
The filter() function uses a lambda to check each item in a list, keeping only those where the lambda returns True.
Execution Sample
Python
numbers = [1, 2, 3, 4, 5]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers)
This code filters the list to keep only even numbers using a lambda inside filter().
Execution Table
StepCurrent Item (x)Lambda Check (x % 2 == 0)ResultActionFiltered List So Far
111 % 2 == 0 → FalseFalseDiscard 1[]
222 % 2 == 0 → TrueTrueKeep 2[2]
333 % 2 == 0 → FalseFalseDiscard 3[2]
444 % 2 == 0 → TrueTrueKeep 4[2, 4]
555 % 2 == 0 → FalseFalseDiscard 5[2, 4]
💡 All items checked, filter ends with [2, 4]
Variable Tracker
VariableStartAfter 1After 2After 3After 4After 5Final
xN/A12345N/A
filtered list[][][2][2][2, 4][2, 4][2, 4]
Key Moments - 2 Insights
Why does the filtered list only include 2 and 4?
Because the lambda returns True only for even numbers (2 and 4). See execution_table rows 2 and 4 where action is 'Keep'.
What happens when lambda returns False for an item?
The item is discarded and not added to the filtered list. See execution_table rows 1, 3, and 5 where action is 'Discard'.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the filtered list after step 3?
A[1, 2, 3]
B[2, 3]
C[2]
D[]
💡 Hint
Check the 'Filtered List So Far' column at step 3 in execution_table.
At which step does the lambda function return True for the first time?
AStep 1
BStep 2
CStep 3
DStep 4
💡 Hint
Look at the 'Lambda Check' and 'Result' columns in execution_table.
If the lambda was changed to 'x > 3', what would be the filtered list after step 5?
A[4, 5]
B[2, 4]
C[1, 2, 3]
D[]
💡 Hint
Consider which numbers in the original list are greater than 3.
Concept Snapshot
filter(function, iterable) returns items where function(item) is True
Use lambda for quick inline functions
Each item is tested; if True, item is kept
Result is an iterator, convert to list to see
Common for filtering lists simply
Full Transcript
This visual shows how filter() works with a lambda function in Python. We start with a list of numbers. The filter() applies the lambda to each number, checking if it is even (x % 2 == 0). For each item, if the lambda returns True, the item is kept; otherwise, it is discarded. The execution table shows each step: the current item, the lambda check, the result, the action taken, and the filtered list so far. Variables track the current item and the filtered list as it builds. Key moments clarify why only even numbers remain and what happens when lambda returns False. The quiz tests understanding of the filtered list at different steps and how changing the lambda affects results. The snapshot summarizes the syntax and behavior of filter() with lambda.

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