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)