Skip to content
FLAVIO COPES
flaviocopes.com

Python List comprehensions

By

Learn Python list comprehension syntax, including transformations, filters, conditional expressions, and when a loop or generator expression is clearer.

~~~

A list comprehension creates a new list from an iterable.

The basic syntax is:

[expression for item in iterable]

For example, you can square every number in a list:

numbers = [1, 2, 3, 4, 5]
numbers_squared = [number**2 for number in numbers]

# [1, 4, 9, 16, 25]

This is equivalent to:

numbers_squared = []

for number in numbers:
    numbers_squared.append(number**2)

It also replaces many simple uses of map():

numbers_squared = list(map(lambda number: number**2, numbers))

The comprehension is usually easier to read.

See the official Python list comprehensions tutorial and language reference for the complete rules.

Filter values

Add an if clause after the loop to keep matching values:

numbers = [1, 2, 3, 4, 5]
even_numbers = [number for number in numbers if number % 2 == 0]

# [2, 4]

The expression still decides what goes into the new list:

even_numbers_squared = [
    number**2
    for number in numbers
    if number % 2 == 0
]

# [4, 16]

Use a conditional expression

Put a conditional expression before for when every input should produce a value:

labels = [
    'even' if number % 2 == 0 else 'odd'
    for number in numbers
]

# ['odd', 'even', 'odd', 'even', 'odd']

Notice the difference:

Keep comprehensions readable

List comprehensions are great for a small transformation or filter.

Use a regular loop when the operation needs side effects, several steps, or complicated conditions. Clear code is more important than fitting everything on one line.

A list comprehension creates the whole list immediately. Use a generator expression when you want to produce values lazily:

squares = (number**2 for number in range(1_000_000))
Tagged: Python ยท All topics
~~~

Related posts about python: