Bird
Raised Fist0
Pythonprogramming~10 mins

Lambda with filter() in Python - Interactive Code Practice

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
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to filter out even numbers from the list.

Python
numbers = [1, 2, 3, 4, 5, 6]
even_numbers = list(filter(lambda x: x [1] 2 == 0, numbers))
print(even_numbers)
Drag options to blanks, or click blank then click option'
A**
B//
C%
D+
Attempts:
3 left
๐Ÿ’ก Hint
Common Mistakes
Using integer division '//' instead of modulo '%'.
Using exponent '**' or addition '+' operators incorrectly.
2fill in blank
medium

Complete the code to filter words longer than 4 characters.

Python
words = ['apple', 'bat', 'carrot', 'dog']
long_words = list(filter(lambda word: len(word) [1] 4, words))
print(long_words)
Drag options to blanks, or click blank then click option'
A<
B>
C==
D<=
Attempts:
3 left
๐Ÿ’ก Hint
Common Mistakes
Using '<' instead of '>' which filters shorter words.
Using '==' which filters words exactly 4 characters long.
3fill in blank
hard

Fix the error in the lambda to filter numbers less than 10.

Python
nums = [5, 12, 7, 20, 3]
small_nums = list(filter(lambda n: n [1] 10, nums))
print(small_nums)
Drag options to blanks, or click blank then click option'
A<=
B>
C==
D<
Attempts:
3 left
๐Ÿ’ก Hint
Common Mistakes
Using '>' which filters numbers greater than 10.
Using '<=' which includes 10, but we want strictly less.
4fill in blank
hard

Fill both blanks to filter words starting with letter 'a' and having length less than 5.

Python
words = ['apple', 'ant', 'bat', 'arc', 'dog']
filtered = list(filter(lambda w: w[1] 'a' and len(w) [2] 5, words))
print(filtered)
Drag options to blanks, or click blank then click option'
Astartswith(
B==
C<
D>
Attempts:
3 left
๐Ÿ’ก Hint
Common Mistakes
Using '==' to compare the whole word instead of checking start.
Using '>' instead of '<' for length comparison.
5fill in blank
hard

Fill both blanks to create a dictionary of words and their lengths, filtering words longer than 3 characters.

Python
words = ['sun', 'moon', 'star', 'sky']
result = {w:: len(w) [1] w in words if len(w) [2] 3}
print(result)
Drag options to blanks, or click blank then click option'
Bfor
C>
D:
Attempts:
3 left
๐Ÿ’ก Hint
Common Mistakes
Missing colon ':' between key and value.
Using incorrect loop keyword.
Using '<' instead of '>' for filtering.

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