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]
✗ Incorrect
The correct syntax places the if–else expression before the for loop: [value_if_true if condition else value_if_false 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]
✗ Incorrect
For even numbers (0,2), add 1 → 1,3; for odd numbers (1,3), subtract 1 → 0,2; final list: [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
✗ Incorrect
When using if–else in list comprehension, else is required to handle the false case.
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)]
✗ Incorrect
You can filter items with if alone: [x for x in range(5) if x > 2] includes only items greater than 2.
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
✗ Incorrect
List comprehension with if–else combines looping and condition in one line, making code shorter and easier to read.
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
Step 1: Understand the condition in the comprehension
The condition x % 2 == 0 checks if a number is even.
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.
Final Answer:
Creates a list of numbers where even numbers stay the same and odd numbers become negative -> Option B
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
Step 1: Recall correct if-else placement in list comprehension
The if-else expression must come before the for loop inside the brackets.
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.
Final Answer:
[x if x > 0 else 0 for x in nums] -> Option A
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
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.
Step 2: Collect results in list
The final list is [2, 4, 4, 6].
Final Answer:
[2, 4, 4, 6] -> Option A
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
Step 1: Analyze the list comprehension structure
The if-else expression is before the for loop, and the trailing if filters values.
Step 2: Confirm syntax correctness
Trailing if after for is allowed to filter items; no syntax error here.
Final Answer:
No error, code runs fine -> Option C
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
Step 1: Understand the condition and output
Temperatures below 0 become 'Freezing', others stay numbers.
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.
Final Answer:
['Freezing' if temp < 0 else temp for temp in temps] -> Option D
Quick Check:
if-else before for, correct condition = A [OK]
Hint: Put if-else before for, condition matches output [OK]