Извинения, если это было задано раньше, но я не мог его увидеть нигде.Условный оператор в одной строке лямбда-функции в python?
По сути, я столкнулся с сценарием, когда мне нужно использовать оператор if внутри лямбда-функции. То, что делает его трудным является то, что в идеале она должна быть в одной строке кода (если то возможно?)
Обычно я бы написать так:
T = 250
if (T > 200):
rate = 200*exp(-T)
else:
rate = 400*exp(-T)
return (rate)
Однако мне это нужно, чтобы выглядеть следующим образом :
rate = lambda(T) : if (T>200): return(200*exp(-T)); else: return(400*exp(-T))
Я понимаю, проще всего было бы принять решение сделать вне функций лямбды, а затем иметь отдельную функцию лямбды для каждого случая, но на самом деле не подходит здесь. Функции лямбда хранятся в массиве и доступны, когда это необходимо, причем каждый элемент массива, соответствующий определенной «скорости», поэтому наличие двух отдельных строк для одной и той же «скорости» будет бесполезным. Любая помощь будет принята с благодарностью или если ее невозможно, некоторое подтверждение от других было бы неплохо :)
Сомневаюсь-квадрат, что вам нужна функция лямбда одну строку, потому что я сомневаюсь, что вам нужна функция одной строки, и я сомневаюсь, что вам нужна функция лямбда, в отличие от имени функции , Какой смысл использовать «лямбда», если вы так или иначе дадите своей функции имя «rate»? – DSM
Жаль, что я могу только +1 DSM один раз ... Но для того, чтобы это было ясно: легче сделать это, чтобы не «принимать решения за пределами лямбда-функций», а просто определять их как обычные функции в первую очередь. Вы можете хранить регулярные функции в массиве. Нет ничего особенного в лямбдах; они являются более ограниченными функциями, а не более мощными функциями. – abarnert
Ну, функция, необходимая для установки в одну строку, что я не думал, что вы можете сделать с именованной функцией? Также эти функции хранятся в виде строк, которые затем оцениваются с использованием «eval», которые я не знал, как делать с регулярными функциями. –