Предварительная оценка:
foo = lambda(x): x if x > 10 else 0
result = foo(bar(x))
Здесь вы можете увидеть, в чем сходство с вашим кодом:
lambda (x): foo(x) if foo(x) > 10 else 0 == (lambda(x): x if x > 10 else 0)(foo(x))
То, что вы ищете, невозможно, если вы не создадите какой-либо объект изменяемого состоянияили какой-то другой странный трюк.
@ Alakazam ответ хитрый и умный, используйте его на свой страх и риск.Лучше использовать итераторы и next
, чтобы избежать дополнительного промежуточного списка:
lambda x: next(res if res > 10 else 0 for res in (bar(x), ))
Здесь у вас есть живой пример