Короткий ответ
Comprehensions (включения) — это лаконичный синтаксис Python для создания коллекций на основе итерируемых объектов: list, dict и set. Списковое включение выглядит как [выражение for элемент in итерируемое if условие] и заменяет цикл с накоплением элементов.
Как это работает подробнее
Включение описывает, что нужно получить, а не как: элементы собираются по правилу из выражения, цикла и необязательного условия-фильтра.
- Единая конструкция. List comprehension объединяет цикл
for, опциональное условиеifи выражение для нового элемента в одну строку. - Декларативность. Вместо ручного
appendкод описывает результат, что делает его более выразительным и «питоничным». - Производительность. Включение часто работает быстрее цикла с накоплением элементов и при этом заметно короче.
- Другие виды. По аналогии есть dict comprehension
{ключ: значение for ...}, set comprehension{значение for ...}и выражение-генератор в круглых скобках.
Пример кода
Цикл и списковое включение
# Обычный цикл
squares_of_evens = []
for i in range(10):
if i % 2 == 0:
squares_of_evens.append(i * i)
# List comprehension
squares_of_evens = [i * i for i in range(10) if i % 2 == 0]
print(squares_of_evens) # [0, 4, 16, 36, 64]Что использовать на практике
- Построение списков. Применяй включения для преобразования и фильтрации данных вместо циклов с накоплением.
- Словари и множества. Для построения
dictиsetтоже есть свои включения — они так же лаконичны. - Генераторные выражения. Если коллекция огромная или результат нужен по частям, используй выражение-генератор в круглых скобках — оно ленивое и экономит память.