List comprehension with if-else lets you create a new list by choosing values based on a condition, all in one simple line.
List comprehension with if–else in Python
new_list = [value_if_true if condition else value_if_false for item in original_list]
The if-else part goes before the for loop in the list comprehension.
This is different from a simple if filter, which comes after the for loop.
numbers = [1, 2, 3, 4] labels = ['even' if num % 2 == 0 else 'odd' for num in numbers] print(labels)
temps = [-5, 3, 0, -1] non_negative = [temp if temp >= 0 else 0 for temp in temps] print(non_negative)
scores = [55, 70, 40] results = ['pass' if score >= 50 else 'fail' for score in scores] print(results)
prices = [100, 250, 50] discounted = [price * 0.9 if price > 100 else price for price in prices] print(discounted)
This program labels each number in the list as 'even' or 'odd' using list comprehension with if-else.
def label_numbers(numbers): print(f"Original numbers: {numbers}") labeled = ['even' if number % 2 == 0 else 'odd' for number in numbers] print(f"Labeled numbers: {labeled}") numbers_list = [10, 15, 22, 33, 40] label_numbers(numbers_list)
Time complexity is O(n) because it processes each item once.
Space complexity is O(n) since it creates a new list of the same size.
A common mistake is putting the if-else after the for loop, which causes syntax errors.
Use this when you want to choose between two values for each item. Use a simple if filter if you want to include or exclude items.
List comprehension with if-else lets you pick one of two values for each item based on a condition.
The if-else goes before the for loop inside the brackets.
This makes your code shorter and easier to read when transforming lists.