向 lambda 函数添​​加多个表达式,以获取 if/else 输出

Posted

技术标签:

【中文标题】向 lambda 函数添​​加多个表达式,以获取 if/else 输出【英文标题】:Adding multiple expressions to lambda function, to get if/else output 【发布时间】:2020-12-02 14:04:26 【问题描述】:

我是编程新手,正在寻求一些有关向 lambda 函数添​​加多个表达式的帮助。但似乎无法开始工作。这是一个菜鸟级别的问题,所以请有人帮助我吗?

a = int()
b = int()

greater (a,b) = lambda(a,b): (a > b) == 'a' or (b > a) == 'b' :

print (greater(10,9))

【问题讨论】:

请记住,这违反了 Python 样式指南 (PEP8)。此时你不妨用def 来定义这个函数 嗨,我明白 def 是要走的路。我只是在了解 lambda 函数的概念,并想执行一个简单的操作。 https://docs.python.org/3/reference/expressions.html#lambda 另见Is there a way to perform “if” in python's lambda 【参考方案1】:

可以使用if 条件实现此目的(这不会“捕捉”ab 相等的情况):

greater = lambda a, b: 'a' if a > b else 'b'

捕捉相等情况有点棘手,需要嵌套if

greater = lambda a, b: 'a' if a > b else 'b' if b > a else 'N/A'

(注意greater 后面和 lambda 的参数周围没有括号)

但是,这违反了 Python 样式指南 (PEP8)。此时(您已经命名了 lambda),您应该使用 def 定义此函数。

【讨论】:

我宁愿将其指定为某种ternary operation...传统的 if 语句不会以这种方式运行并且不会返回值 嗨,我刚刚执行了你的表达式,但它仍然给我一个语法错误。好的,我会告诉你实际的问题。创建一个 lambda 函数“greater”,它接受两个参数 x 和 y,如果 x>y 则返回 x,否则返回 y。 在第二种情况下我会使用括号,否则不清楚哪个条件首先执行 @Dan 因为这段代码无论如何都不应该使用,我认为这并不重要 @MZ 我不确定您所说的“传统的 if 语句不以这种方式运行并且不返回值”是什么意思

以上是关于向 lambda 函数添​​加多个表达式,以获取 if/else 输出的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 .yaml 文件向 AWS Lambda 函数添​​加策略?

调用将 lambda 函数加在一起的自定义函数时内核重新启动

什么是lambda函数?它有什么好处?

lambda表达式

匿名函数lambda

Java8 函数式接口