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 подскажет развёрнутый ответ в реальном времени.