How to use list comprehensions
Transform a sequence
A list comprehension combines a result expression and a for clause. It creates a new list.
squares = [number ** 2 for number in range(1, 6)]
print(squares)
Filter items
Add an if clause after the loop to keep only items that pass a condition.
numbers = range(1, 11)
even_squares = [n ** 2 for n in numbers if n % 2 == 0]
print(even_squares)
Use an inline condition
A conditional expression before for transforms every item in one of two ways. It does not filter items out.
temperatures = [18, 25, 31]
labels = ['hot' if t >= 30 else 'mild' for t in temperatures]
print(labels)
Prefer readability
Use a normal loop when the transformation needs exceptions, side effects, several conditions, or multiple lines. Comprehensions are best for one clear mapping with an optional simple filter.
clean_names = [name.strip().title()
for name in [' ada ', 'GRACE']
if name.strip()]
print(clean_names)