Easycomprehension
Что такое list/dict/set comprehension?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
Comprehension — компактный синтаксис создания коллекций. Обычно быстрее explicit for-loop.
# list comprehension
squares = [x*x for x in range(10)]
evens = [x for x in range(10) if x % 2 == 0]
clamped = [x if x > 0 else 0 for x in nums] # if/else в expression
# dict comprehension
squared = {k: v*v for k, v in pairs.items() if v > 0}
# set comprehension (unique)
unique = {x for x in nums}
# generator expression — lazy, не создаёт list
total = sum(x*x for x in range(10)) # эффективнее sum([...])- Вложенные:
[[i*j for j in range(3)] for i in range(3)]; - Walrus (Python 3.8):
[y for x in data if (y := f(x)) is not None]; - Не злоупотреблять — длинные comprehension плохо читаются.
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.