Почему list comprehension – это не просто «короче», а принципиально другой стиль мышления
Очень часто можно увидеть такой код:
result = []
for x in data:
if x > 0:
result.append(x * 2)
Работает. Всё понятно. Но это «императивный» стиль – шаг за шагом.
Как это выглядит в Python-стиле
result = [x * 2 for x in data if x > 0]
И вот здесь происходит важное изменение:
👉 мы описываем что хотим получить, а не как идти по шагам
В чём реальная разница?
Это не просто «короче»:
• код становится декларативным
• легче читать «слева направо»
• проще комбинировать операции
• меньше промежуточных состояний
Почему это важно в аналитике и data-инженерии
Когда работаешь с данными, часто есть цепочка:
• фильтрация
• преобразование
• агрегирование
И list comprehension позволяет описывать это компактно:
[x["price"] for x in orders if x["status"] == "paid"]
Но есть ловушка ⚠️
Когда логика становится сложной — код превращается в кашу:
[x * 2 if x > 0 else x - 2 for x in data if x % 2 == 0]
👉 Это уже трудно читать
Когда использовать
✔️ простые фильтры
✔️ простые преобразования
✔️ короткие цепочки логики
Когда НЕ стоит
❌ сложные условия
❌ вложенные конструкции
❌ длинные выражения
В таких случаях обычный for читается лучше.
Главное правило
list comprehension – это не «сокращение кода», это способ мыслить через преобразование коллекций.
Вывод
Хороший Python-код – это не самый короткий код, а самый понятный при первом чтении.