list comprehension) — это компактный способ создать новый список: [expr for item in iterable if condition]. Аналогично словарное включение (dict comprehension) создаёт словарь через {key_expr: value_expr for item in iterable if condition}.
list comprehension) — это компактный способ создать новый список: [expr for item in iterable if condition]. Аналогично словарное включение (dict comprehension) создаёт словарь через {key_expr: value_expr for item in iterable if condition}.
List comprehension и dict comprehension — это короткий, но выразительный синтаксис для создания коллекций на основе других коллекций. На собеседованиях часто дают задачи, которые можно решить и обычным циклом, и с помощью comprehension, чтобы посмотреть на твой уровень владения синтаксисом Python.
Списковое включение (list comprehension)
Общий вид:
[expression for item in iterable if condition]Примеры:
numbers = [1, 2, 3, 4]
# возвести все числа в квадрат
squares = [x * x for x in numbers] # [1, 4, 9, 16]
# оставить только чётные
evens = [x for x in numbers if x % 2 == 0] # [2, 4]То же самое можно записать обычным циклом for, но comprehension короче и часто читается проще, если выражение не слишком сложное.
Словарное включение (dict comprehension)
Общий вид:
{key_expr: value_expr for item in iterable if condition}Пример: построить словарь «число → его квадрат»:
numbers = [1, 2, 3]
squares = {x: x * x for x in numbers}
# {1: 1, 2: 4, 3: 9}Частый кейс в backend‑разработке — преобразование списка объектов в словарь по какому‑то ключу.
users = [
{"id": 1, "name": "Ann"},
{"id": 2, "name": "Max"},
]
users_by_id = {u["id"]: u for u in users}Когда использовать comprehension, а когда нет
Хорошо подходят для простых преобразований: фильтрация, маппинг, построение словарей по ключу.
Если логика слишком сложная (много условий, вложенные циклы), лучше написать обычный цикл — так код будет понятнее.
Как ответить на собеседовании
List и dict comprehension — это краткая форма записи циклов для построения новых коллекций. Списковое включение выглядит как [expr for x in iterable if cond], а словарное — как {k: v for x in iterable if cond]. Их используют для компактного и читаемого преобразования данных.
Оцени свой прогресс