Bird
Raised Fist0
Pythonprogramming~10 mins

filter() function 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 - filter() function
Start with iterable
Apply function to each item
Function returns True?
NoSkip item
Yes
Keep item in result
Repeat for all items
Return filtered iterable
The filter() function checks each item in a list with a function. If the function says True, the item stays; if False, it is skipped.
Execution Sample
Python
numbers = [1, 2, 3, 4, 5]
def is_even(n):
    return n % 2 == 0
filtered = filter(is_even, numbers)
print(list(filtered))
This code keeps only even numbers from the list.
Execution Table
StepCurrent Item (n)Function is_even(n)ResultActionFiltered List So Far
111 % 2 == 0 -> FalseFalseSkip 1[]
222 % 2 == 0 -> TrueTrueKeep 2[2]
333 % 2 == 0 -> FalseFalseSkip 3[2]
444 % 2 == 0 -> TrueTrueKeep 4[2, 4]
555 % 2 == 0 -> FalseFalseSkip 5[2, 4]
End---All items checked[2, 4]
💡 All items processed, filter returns only items where function returned True.
Variable Tracker
VariableStartAfter 1After 2After 3After 4After 5Final
n-12345-
filtered list[][][2][2][2, 4][2, 4][2, 4]
Key Moments - 2 Insights
Why does the filter skip some items instead of keeping all?
Because the function returns False for those items (see execution_table rows 1, 3, 5), filter only keeps items where the function returns True.
Is the filter result a list immediately?
No, filter returns an iterator. We convert it to a list with list(filtered) to see the results, as shown in the execution_sample code.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the filtered list after step 4?
A[2]
B[1, 2, 3, 4]
C[2, 4]
D[1, 3, 5]
💡 Hint
Check the 'Filtered List So Far' column at step 4 in the execution_table.
At which step does the function return True for the first time?
AStep 2
BStep 1
CStep 3
DStep 4
💡 Hint
Look at the 'Function is_even(n)' and 'Result' columns in the execution_table.
If the function always returned True, what would the filtered list be after all steps?
A[]
B[1, 2, 3, 4, 5]
C[2, 4]
D[1, 3, 5]
💡 Hint
If function returns True for every item, filter keeps all items (see concept_flow).
Concept Snapshot
filter(function, iterable)
- Applies function to each item
- Keeps items where function returns True
- Returns an iterator
- Convert to list to see results
- Useful to select items by condition
Full Transcript
The filter() function takes a list and a function. It checks each item with the function. If the function returns True, the item is kept; if False, it is skipped. The result is an iterator that can be converted to a list. For example, filtering even numbers keeps only numbers divisible by 2. Step by step, each item is tested and either added or skipped. This helps select items easily without writing loops.

Practice

(1/5)
1. What does the filter() function do in Python?
easy
A. Sorts the items in a list
B. Changes all items in a list to uppercase
C. Selects items from a list that meet a condition
D. Adds all items in a list together

Solution

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

    The filter() function takes a function and a list, then keeps only items where the function returns True.
  2. Step 2: Compare options with the purpose

    Only Selects items from a list that meet a condition describes selecting items based on a condition, which matches filter()'s job.
  3. Final Answer:

    Selects items from a list that meet a condition -> Option C
  4. Quick Check:

    filter() selects items [OK]
Hint: Remember: filter keeps items passing the test [OK]
Common Mistakes:
  • Thinking filter changes items instead of selecting
  • Confusing filter with map or sort
  • Assuming filter adds or combines items
2. Which of these is the correct syntax to use filter() to keep even numbers from a list nums?
easy
A. filter(lambda x: x % 2 == 0, nums)
B. filter(nums, lambda x: x % 2 == 0)
C. filter(x % 2 == 0, nums)
D. filter(lambda x: nums % 2 == 0)

Solution

  1. Step 1: Recall filter() syntax

    The correct syntax is filter(function, iterable), where function tests each item.
  2. Step 2: Check each option

    filter(lambda x: x % 2 == 0, nums) uses lambda x: x % 2 == 0 as function and nums as iterable, which is correct.
  3. Final Answer:

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

    filter(function, iterable) correct order [OK]
Hint: filter(function, iterable) order matters [OK]
Common Mistakes:
  • Swapping function and iterable arguments
  • Using expression instead of function
  • Missing lambda or function for filtering
3. What is the output of this code?
nums = [1, 2, 3, 4, 5]
even_nums = list(filter(lambda x: x % 2 == 0, nums))
print(even_nums)
medium
A. [1, 3, 5]
B. [2, 4]
C. [1, 2, 3, 4, 5]
D. []

Solution

  1. Step 1: Understand the filter condition

    The lambda function keeps numbers where x % 2 == 0, meaning even numbers.
  2. Step 2: Apply filter to the list

    From [1, 2, 3, 4, 5], only 2 and 4 are even, so the filtered list is [2, 4].
  3. Final Answer:

    [2, 4] -> Option B
  4. Quick Check:

    Filter keeps even numbers [OK]
Hint: Filter keeps items where function returns True [OK]
Common Mistakes:
  • Confusing even and odd numbers
  • Forgetting to convert filter to list
  • Expecting original list unchanged
4. Find the error in this code snippet:
nums = [10, 15, 20]
result = filter(x % 10 == 0, nums)
print(list(result))
medium
A. Wrong variable name 'nums'
B. No error, code runs fine
C. filter() cannot be converted to list
D. Missing lambda function for filter

Solution

  1. Step 1: Check filter function argument

    The first argument to filter() must be a function, but x % 10 == 0 is an expression, not a function.
  2. Step 2: Identify fix

    We need to wrap the expression in a lambda: lambda x: x % 10 == 0 to make it a function.
  3. Final Answer:

    Missing lambda function for filter -> Option D
  4. Quick Check:

    filter needs a function as first argument [OK]
Hint: filter needs a function, use lambda for expressions [OK]
Common Mistakes:
  • Passing expression instead of function
  • Assuming filter returns list directly
  • Ignoring syntax errors in lambda usage
5. You have a list of words: words = ['apple', '', 'banana', None, 'cherry', '']. Which code correctly filters out empty strings and None values using filter()?
hard
A. list(filter(lambda w: w, words))
B. list(filter(lambda w: w == '', words))
C. list(filter(lambda w: w is None, words))
D. list(filter(lambda w: w != None or w != '', words))

Solution

  1. Step 1: Understand filtering out empty and None

    Empty strings and None are 'falsy' in Python, so lambda w: w keeps only truthy values.
  2. Step 2: Check each option

    list(filter(lambda w: w, words)) keeps only truthy values, removing empty strings and None. Options B and C keep only empty or None, which is opposite. list(filter(lambda w: w != None or w != '', words)) uses wrong logic and keeps all.
  3. Final Answer:

    list(filter(lambda w: w, words)) -> Option A
  4. Quick Check:

    filter with lambda w: w removes falsy values [OK]
Hint: Use lambda x: x to remove falsy values [OK]
Common Mistakes:
  • Using wrong condition to keep empty or None
  • Using 'or' instead of 'and' in condition
  • Expecting filter to remove without function