Bird
Raised Fist0
Pythonprogramming~5 mins

List comprehension with if–else in Python - Cheat Sheet & Quick Revision

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
Recall & Review
beginner
What is list comprehension with if–else in Python?
It is a way to create a new list by applying a condition to each item, choosing one value if the condition is true and another if false, all in one line.
Click to reveal answer
beginner
How do you write a list comprehension with if–else?
Use the syntax: [<value_if_true> if <condition> else <value_if_false> for <item> in <iterable>].
Click to reveal answer
beginner
Example: What does this code do? [x*2 if x > 5 else x+2 for x in range(8)]
It creates a list where numbers greater than 5 are doubled, and numbers 5 or less have 2 added. Result: [2, 3, 4, 5, 6, 7, 12, 14]
Click to reveal answer
intermediate
Can you use if–else inside list comprehension without an else part?
No, if you want to choose between two values, you must include else. But you can filter items with if alone (no else) to include only some items.
Click to reveal answer
beginner
Why use list comprehension with if–else instead of a for loop?
It makes code shorter and easier to read by combining looping and conditional logic in one line.
Click to reveal answer
What is the correct syntax for list comprehension with if–else?
A[value_if_true if condition else value_if_false for item in iterable]
B[value_if_true for item in iterable if condition else value_if_false]
C[if condition value_if_true else value_if_false for item in iterable]
D[value_if_true else value_if_false if condition for item in iterable]
What will this list comprehension produce? [x+1 if x % 2 == 0 else x-1 for x in range(4)]
A[2, 1, 4, 3]
B[1, 2, 3, 4]
C[0, 1, 2, 3]
D[1, 0, 3, 2]
Can you omit the else part in a list comprehension with if–else?
AYes, else is optional
BNo, else is required if using if–else
CYes, but only for strings
DNo, unless you use a for loop
Which of these is a valid use of if in list comprehension without else?
A[x for x in range(5) if x > 2]
B[x if x > 2 for x in range(5)]
C[x if x > 2 else 0 for x in range(5)]
D[if x > 2 x for x in range(5)]
Why might you choose list comprehension with if–else over a for loop?
AIt is always faster
BIt uses less memory
CIt makes code shorter and clearer
DIt avoids using variables
Explain how to use if–else inside a list comprehension and give a simple example.
Think about how you pick one value if true and another if false for each item.
You got /3 concepts.
    Describe the difference between using if alone and if–else in list comprehensions.
    Consider when you want to include or exclude items versus when you want to transform items differently.
    You got /3 concepts.

      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