Bird
Raised Fist0
Pythonprogramming~10 mins

List comprehension with condition 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 create a list of squares of numbers from 1 to 5.

Python
squares = [x[1]2 for x in range(1, 6)]
print(squares)
Drag options to blanks, or click blank then click option'
A**
B+
C//
D*
Attempts:
3 left
๐Ÿ’ก Hint
Common Mistakes
Using multiplication (*) instead of exponentiation (**).
Using addition (+) instead of exponentiation.
2fill in blank
medium

Complete the code to create a list of even numbers from 1 to 10 using list comprehension with a condition.

Python
evens = [x for x in range(1, 11) if x [1] 2 == 0]
print(evens)
Drag options to blanks, or click blank then click option'
A//
B+
C%
D**
Attempts:
3 left
๐Ÿ’ก Hint
Common Mistakes
Using addition (+) instead of modulus (%).
Using floor division (//) instead of modulus.
3fill in blank
hard

Fix the error in the list comprehension to get numbers greater than 5 from the list.

Python
numbers = [1, 3, 6, 8, 2]
greater_than_five = [n for n in numbers if n [1] 5]
print(greater_than_five)
Drag options to blanks, or click blank then click option'
A>
B<=
C==
D<
Attempts:
3 left
๐Ÿ’ก Hint
Common Mistakes
Using less than (<) instead of greater than (>).
Using equality (==) instead of comparison.
4fill in blank
hard

Fill both blanks to create a list of squares of odd numbers from 1 to 10.

Python
odd_squares = [x[1]2 for x in range(1, 11) if x [2] 2 != 0]
print(odd_squares)
Drag options to blanks, or click blank then click option'
A**
B+
C%
D//
Attempts:
3 left
๐Ÿ’ก Hint
Common Mistakes
Using addition (+) instead of exponentiation.
Using floor division (//) instead of modulus.
5fill in blank
hard

Fill all three blanks to create a list of uppercase words that have length greater than 3.

Python
words = ['apple', 'bat', 'carrot', 'dog']
result = [[1].upper() for [2] in words if len([3]) > 3]
print(result)
Drag options to blanks, or click blank then click option'
Aword
Dwords
Attempts:
3 left
๐Ÿ’ก Hint
Common Mistakes
Using different variable names inconsistently.
Applying .upper() to the list instead of the word.

Practice

(1/5)
1. What does the following list comprehension do?
[x for x in range(5) if x % 2 == 0]
easy
A. Creates a list of odd numbers from 0 to 4
B. Creates a list of even numbers from 0 to 4
C. Creates a list of numbers from 1 to 5
D. Creates a list of numbers divisible by 3

Solution

  1. Step 1: Understand the range and condition

    The range(5) generates numbers 0, 1, 2, 3, 4. The condition x % 2 == 0 selects numbers divisible by 2 (even numbers).
  2. Step 2: Apply the condition to each number

    From 0 to 4, the even numbers are 0, 2, and 4. These are included in the new list.
  3. Final Answer:

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

    Even numbers from 0 to 4 = [0, 2, 4] [OK]
Hint: Look for the condition after 'if' to filter items [OK]
Common Mistakes:
  • Confusing even and odd numbers
  • Ignoring the condition and taking all numbers
  • Misunderstanding the range function
2. Which of the following is the correct syntax for a list comprehension that selects numbers greater than 10 from list nums?
easy
A. [x for x > 10 in nums]
B. [x if x > 10 for x in nums]
C. [if x > 10 for x in nums]
D. [x for x in nums if x > 10]

Solution

  1. Step 1: Recall list comprehension syntax

    The correct syntax is [expression for item in iterable if condition]. Here, expression and item are both x, iterable is nums, and condition is x > 10.
  2. Step 2: Check each option

    [x for x in nums if x > 10] matches the correct syntax. The other options have misplaced or missing parts.
  3. Final Answer:

    [x for x in nums if x > 10] -> Option D
  4. Quick Check:

    Correct list comprehension syntax = [x for x in nums if x > 10] [OK]
Hint: Remember: for comes before if in list comprehension [OK]
Common Mistakes:
  • Placing 'if' before 'for'
  • Omitting 'for' keyword
  • Using incorrect order of clauses
3. What is the output of this code?
nums = [3, 7, 12, 5, 20]
result = [n*2 for n in nums if n > 6]
print(result)
medium
A. [14, 24, 40]
B. [3, 7, 12, 5, 20]
C. [6, 14, 24, 10, 40]
D. [12, 24, 40]

Solution

  1. Step 1: Identify numbers greater than 6

    From the list, numbers greater than 6 are 7, 12, and 20.
  2. Step 2: Multiply each selected number by 2

    7*2=14, 12*2=24, 20*2=40. These form the new list.
  3. Final Answer:

    [14, 24, 40] -> Option A
  4. Quick Check:

    Filter >6 and double = [14, 24, 40] [OK]
Hint: Apply condition first, then transform each item [OK]
Common Mistakes:
  • Multiplying all numbers, ignoring condition
  • Including numbers less than or equal to 6
  • Confusing multiplication with addition
4. Find the error in this list comprehension:
values = [1, 2, 3, 4]
new_values = [x for x in values if x > 2 else 0]
medium
A. SyntaxError due to incorrect use of else in list comprehension
B. No error, code runs fine
C. TypeError because of wrong condition
D. NameError because x is undefined

Solution

  1. Step 1: Understand list comprehension with condition

    In list comprehension, 'if' can be used to filter items, but 'else' must be part of a conditional expression, not after 'if' alone.
  2. Step 2: Identify the syntax error

    The code uses 'if x > 2 else 0' incorrectly. The correct way is to use a conditional expression inside the expression part, like [x if x > 2 else 0 for x in values].
  3. Final Answer:

    SyntaxError due to incorrect use of else in list comprehension -> Option A
  4. Quick Check:

    Else must be inside expression, not after if clause [OK]
Hint: Use if-else inside expression, not after if clause [OK]
Common Mistakes:
  • Placing else after if in list comprehension filter
  • Confusing filter condition with conditional expression
  • Ignoring Python syntax rules for comprehensions
5. You have a list of strings: words = ['apple', '', 'banana', 'cherry', '', 'date']. Which list comprehension creates a new list with only non-empty strings in uppercase?
hard
A. [w for w in words if w.upper()]
B. [w.upper() if w else w for w in words]
C. [w.upper() for w in words if w]
D. [w.upper() for w in words if w == '']

Solution

  1. Step 1: Understand filtering non-empty strings

    In Python, empty strings are false in boolean context. Using if w filters out empty strings.
  2. Step 2: Convert filtered strings to uppercase

    For each non-empty string w, w.upper() converts it to uppercase.
  3. Final Answer:

    [w.upper() for w in words if w] -> Option C
  4. Quick Check:

    Filter non-empty and uppercase = [w.upper() for w in words if w] [OK]
Hint: Use 'if w' to filter non-empty strings in list comprehension [OK]
Common Mistakes:
  • Filtering empty strings incorrectly
  • Using if-else incorrectly inside comprehension
  • Not converting strings to uppercase