Bird
Raised Fist0
Pythonprogramming~15 mins

filter() function in Python - Mini Project: Build & Apply

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
Using the filter() function to select even numbers
๐Ÿ“– Scenario: Imagine you have a list of numbers representing ages of people in a group. You want to find only the even ages to organize a special event for them.
๐ŸŽฏ Goal: You will build a small program that uses the filter() function to select even numbers from a list of ages.
๐Ÿ“‹ What You'll Learn
Create a list called ages with the exact values: 12, 17, 20, 25, 30, 33, 40
Create a function called is_even that returns True if a number is even
Use the filter() function with is_even and ages to get only even ages
Convert the filter result to a list called even_ages
Print the even_ages list
๐Ÿ’ก Why This Matters
๐ŸŒ Real World
Filtering data is common when you want to select only certain items from a list, like customers above a certain age or products in stock.
๐Ÿ’ผ Career
Understanding filter() helps in data cleaning, processing lists, and working efficiently with collections in many programming jobs.
Progress0 / 4 steps
1
Create the list of ages
Create a list called ages with these exact values: 12, 17, 20, 25, 30, 33, 40
Python
Hint

Use square brackets [] to create a list and separate numbers with commas.

2
Define the function to check even numbers
Define a function called is_even that takes one parameter num and returns True if num % 2 == 0, otherwise returns False
Python
Hint

The % operator gives the remainder. Even numbers have remainder 0 when divided by 2.

3
Use filter() to select even ages
Use the filter() function with is_even and ages, then convert the result to a list called even_ages
Python
Hint

Remember to wrap filter() with list() to get a list.

4
Print the list of even ages
Print the list even_ages using print(even_ages)
Python
Hint

The output should show only the even numbers from the list.

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