← Все вопросы

Можно ли в lambda написать условие if/else?

Задан 11 месяцев назад319 просмотров3 ответа
6

Хочу в key= или в map сделать так: если число чётное — вернуть его, иначе ноль. В обычной функции это просто if/else, но lambda вроде однострочная. Можно ли впихнуть туда условие?

3 ответа

12
✓ Принятый ответ — помог автору

Можно, но только в виде тернарного выражения (не оператор if, а A if cond else B):

f = lambda x: x if x % 2 == 0 else 0
f(4)  # 4
f(3)  # 0

Обычный многострочный if: в lambda нельзя — там допустимо только одно выражение. Если логика сложнее одного тернарника, делай нормальную def-функцию, так читаемее.

4

Да, через тернарник: lambda x: 'да' if x > 0 else 'нет'. Полноценный if-блок туда не влезет.

2

Только тернарный.

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект