Bird
Raised Fist0
Pythonprogramming~15 mins

List comprehension with if–else 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
List comprehension with if-else
📖 Scenario: You are working in a fruit store. You have a list of fruit names. You want to create a new list that shows if each fruit is 'Sweet' or 'Sour'. For this, you will use list comprehension with an if-else condition.
🎯 Goal: Create a list of fruits, then use list comprehension with if-else to label each fruit as 'Sweet' or 'Sour'. Finally, print the new list.
📋 What You'll Learn
Create a list called fruits with these exact values: 'apple', 'lemon', 'banana', 'lime', 'cherry'
Create a list comprehension called taste_labels that labels each fruit as 'Sweet' if the fruit is 'apple', 'banana', or 'cherry', otherwise 'Sour'
Print the taste_labels list
💡 Why This Matters
🌍 Real World
Stores and shops often need to categorize items quickly based on properties like taste, price, or availability. Using list comprehension with if-else helps automate this.
💼 Career
Understanding list comprehension with conditions is useful for data processing, filtering, and labeling tasks in many programming jobs.
Progress0 / 4 steps
1
Create the list of fruits
Create a list called fruits with these exact values: 'apple', 'lemon', 'banana', 'lime', 'cherry'
Python
Hint

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

2
Set up the sweet fruits list
Create a list called sweet_fruits that contains these exact fruits: 'apple', 'banana', 'cherry'
Python
Hint

This list will help you check if a fruit is sweet or sour.

3
Create the list comprehension with if-else
Create a list comprehension called taste_labels that goes through each fruit in fruits and adds 'Sweet' if the fruit is in sweet_fruits, otherwise adds 'Sour'
Python
Hint

Use the format: [value_if_true if condition else value_if_false for item in list]

4
Print the taste labels
Write a print statement to display the taste_labels list
Python
Hint

Use print(taste_labels) to show the result.

Practice

(1/5)
1. What does the following list comprehension do?
[x if x % 2 == 0 else -x for x in range(5)]
easy
A. Creates a list of numbers from 0 to 4 without changes
B. Creates a list of numbers where even numbers stay the same and odd numbers become negative
C. Creates a list of only negative numbers from 0 to 4
D. Creates a list of only even numbers from 0 to 4

Solution

  1. Step 1: Understand the condition in the comprehension

    The condition x % 2 == 0 checks if a number is even.
  2. Step 2: Apply the if-else for each number in range(5)

    If even, keep x; if odd, use -x. So 0,2,4 stay same; 1,3 become -1,-3.
  3. Final Answer:

    Creates a list of numbers where even numbers stay the same and odd numbers become negative -> Option B
  4. Quick Check:

    if-else picks value based on even check = D [OK]
Hint: If-else picks value before for loop [OK]
Common Mistakes:
  • Thinking if-else goes after the for loop
  • Confusing condition meaning (odd vs even)
  • Ignoring the else part
2. Which of these is the correct syntax for a list comprehension with if-else in Python?
easy
A. [x if x > 0 else 0 for x in nums]
B. [x for x in nums if x > 0 else 0]
C. [if x > 0 then x else 0 for x in nums]
D. [x if x > 0 else 0 in nums]

Solution

  1. Step 1: Recall correct if-else placement in list comprehension

    The if-else expression must come before the for loop inside the brackets.
  2. Step 2: Check each option's syntax

    [x if x > 0 else 0 for x in nums] correctly places x if x > 0 else 0 before for x in nums. Others have syntax errors.
  3. Final Answer:

    [x if x > 0 else 0 for x in nums] -> Option A
  4. Quick Check:

    if-else before for loop = C [OK]
Hint: If-else must be before for in comprehension [OK]
Common Mistakes:
  • Putting if-else after the for loop
  • Using 'then' keyword (not in Python)
  • Missing for loop entirely
3. What is the output of this code?
nums = [1, 2, 3, 4]
result = [x*2 if x % 2 == 0 else x+1 for x in nums]
print(result)
medium
A. [2, 4, 4, 6]
B. [2, 4, 4, 4]
C. [2, 4, 4, 8]
D. [2, 2, 4, 8]

Solution

  1. Step 1: Evaluate each element with condition

    For each number: if even, multiply by 2; if odd, add 1. So 1->2, 2->4, 3->4, 4->8.
  2. Step 2: Collect results in list

    The final list is [2, 4, 4, 6].
  3. Final Answer:

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

    if even *2 else +1 = [2,4,4,6] [OK]
Hint: Check each item with condition carefully [OK]
Common Mistakes:
  • Mixing up multiplication and addition
  • Applying condition after the loop
  • Wrong output list length
4. Find the error in this list comprehension:
values = [10, 15, 20]
new_values = [x if x > 15 else x*2 for x in values if x]
medium
A. The if condition after the for loop is invalid syntax
B. The if-else expression must be inside parentheses
C. No error, code runs fine
D. The else part should come after the for loop

Solution

  1. Step 1: Analyze the list comprehension structure

    The if-else expression is before the for loop, and the trailing if filters values.
  2. Step 2: Confirm syntax correctness

    Trailing if after for is allowed to filter items; no syntax error here.
  3. Final Answer:

    No error, code runs fine -> Option C
  4. Quick Check:

    Trailing if filters allowed = B [OK]
Hint: Trailing if filters items, allowed after for [OK]
Common Mistakes:
  • Thinking trailing if is invalid
  • Expecting else after for loop
  • Misplacing parentheses
5. You have a list of temperatures in Celsius: temps = [22, -5, 0, 15, -10]. Use a list comprehension with if-else to create a new list where temperatures below 0 become the string 'Freezing', and others stay as numbers.
Which code does this correctly?
hard
A. [temp for temp in temps if temp >= 0 else 'Freezing']
B. [temp if temp < 0 else 'Freezing' for temp in temps]
C. [temp if temp > 0 else 'Freezing' for temp in temps]
D. ['Freezing' if temp < 0 else temp for temp in temps]

Solution

  1. Step 1: Understand the condition and output

    Temperatures below 0 become 'Freezing', others stay numbers.
  2. Step 2: Check each option's if-else placement and logic

    ['Freezing' if temp < 0 else temp for temp in temps] correctly uses 'Freezing' if temp < 0 else temp before the for loop. Others have wrong order or logic.
  3. Final Answer:

    ['Freezing' if temp < 0 else temp for temp in temps] -> Option D
  4. Quick Check:

    if-else before for, correct condition = A [OK]
Hint: Put if-else before for, condition matches output [OK]
Common Mistakes:
  • Swapping if and else parts
  • Placing if-else after for loop
  • Using filter if instead of if-else expression