Списочные выражения в Python
Списочные выражения (или list comprehensions) — это краткий и удобный способ создать список, используя цикл и, при необходимости, условие. Они позволяют записывать создание списков в одну строку, делая код чище и понятнее.
Базовый синтаксис
[выражение for элемент in итерируемый_объект]
Пример — создать список квадратов чисел от 0 до 4:
squares = [x ** 2 for x in range(5)]
print(squares) # [0, 1, 4, 9, 16]
С условием
Можно добавлять условие, чтобы включать только подходящие элементы:
evens = [x for x in range(10) if x % 2 == 0]
print(evens) # [0, 2, 4, 6, 8]
Списочные выражения вместо циклов
Вместо длинных циклов можно использовать списочные выражения:
# Обычный способ result = [] for x in range(5): result.append(x + 1) # То же самое через list comprehension result = [x + 1 for x in range(5)]
Вложенные списочные выражения
Можно использовать вложенные циклы внутри выражения:
pairs = [(x, y) for x in range(2) for y in range(2)]
print(pairs) # [(0, 0), (0, 1), (1, 0), (1, 1)]
Когда использовать?
- Когда нужно создать список на основе другого
- Когда хочется сделать код компактнее
- Когда одно выражение понятнее, чем целый цикл
Главное — не переборщить. Если выражение становится слишком сложным, лучше использовать обычный цикл for
для понятности.