向 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
条件实现此目的(这不会“捕捉”a
和b
相等的情况):
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 函数添加策略?