Коротко

List comprehension — компактный способ построить список из итерируемого:

squares = [x * x for x in range(10) if x % 2 == 0]

Есть также dict/set comprehensions и generator expression (x for x in ...).

Зачем спрашивают

Смотрят idiomatic Python и понимание, когда comprehension уместен, а когда лучше обычный цикл (сложная логика, side effects).

Короткий ответ

«Это синтаксис создания списка в одну строку: выражение + цикл + опциональный фильтр. Для ленивых последовательностей — generator expression.»