Bird
Raised Fist0
Pythonprogramming~20 mins

filter() function in Python - Practice Problems & Coding Challenges

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
Challenge - 5 Problems
๐ŸŽ–๏ธ
Filter Function Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
โ“ Predict Output
intermediate
2:00remaining
What is the output of this filter() example?
Consider the following Python code using filter(). What will be printed?
Python
numbers = [1, 2, 3, 4, 5, 6]
result = list(filter(lambda x: x % 2 == 0, numbers))
print(result)
A[1, 3, 5]
B[1, 2, 3, 4, 5, 6]
C[2, 4, 6]
D[]
Attempts:
2 left
๐Ÿ’ก Hint
filter() keeps items where the function returns True.
โ“ Predict Output
intermediate
2:00remaining
What does this filter() call return?
What is the output of this code snippet?
Python
words = ['apple', 'banana', 'cherry', 'date']
result = list(filter(lambda w: len(w) > 5, words))
print(result)
A['apple', 'banana', 'cherry']
B['banana', 'cherry']
C['date']
D['apple', 'date']
Attempts:
2 left
๐Ÿ’ก Hint
filter() keeps words longer than 5 letters.
โ“ Predict Output
advanced
2:00remaining
What is the output of this filter() with None as function?
What will this code print?
Python
items = [0, 1, False, True, '', 'Hello', None, [], [1, 2]]
result = list(filter(None, items))
print(result)
A[]
B[0, 1, False, True, '', 'Hello', None, [], [1, 2]]
C[False, True, 'Hello', None, [1, 2]]
D[1, True, 'Hello', [1, 2]]
Attempts:
2 left
๐Ÿ’ก Hint
filter(None, iterable) removes all falsey values.
โ“ Predict Output
advanced
2:00remaining
What is the output of this chained filter() example?
What will this code print?
Python
data = range(10)
result = list(filter(lambda x: x % 2 == 0, filter(lambda x: x > 4, data)))
print(result)
A[6, 8]
B[4, 6, 8]
C[0, 2, 4]
D[5, 6, 7, 8, 9]
Attempts:
2 left
๐Ÿ’ก Hint
First filter keeps numbers > 4, second filter keeps even numbers.
๐Ÿง  Conceptual
expert
2:00remaining
Which option causes a TypeError when used with filter()?
Which of these options will cause a TypeError when passed as the function argument to filter()?
AAn integer like 5
BNone
CA function that returns True or False
DA lambda expression returning a boolean
Attempts:
2 left
๐Ÿ’ก Hint
filter() expects a function or None as first argument.

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