← Все вопросы
Можно ли в lambda написать условие if/else?
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
Только тернарный.
Ваш ответ
Войдите, чтобы ответить на вопрос.