【问题标题】:How do I do multiple things inside one lambda function?如何在一个 lambda 函数中执行多项操作?
【发布时间】:2021-07-10 16:58:04
【问题描述】:

我正在学习 Python,我想在一个 lambda 函数中做多件事。

仅举一个小例子,如果我想在一个函数中进行加法、减法和乘法运算,我该怎么做?

我尝试使用这样的代码只是为了看看它是否可以工作,但它没有:

a = 1
b = 2
myFunction = lambda a, b: a + b, b - a, a * b
print(myFunction(a, b))

【问题讨论】:

标签: python


【解决方案1】:

您可以将这些操作分组到tuple

a = 1
b = 2
myFunction = lambda a, b: (a + b, b - a, a * b)
myFunction(a, b)

输出:

(3, 1, 2)

注意。您的代码中的错误是 myFunction 是一个元组,其中包含您的 lambda 作为第一个元素,而不是函数。

【讨论】:

    【解决方案2】:

    我认为 lambda 返回一个元组存在轻微的语法问题。

    使用这个语法:

    a = 1
    b = 2
    myFunction = lambda a, b: (a + b, b - a, a * b)
    print(myFunction(a, b))
    

    【讨论】:

    • lambda(或根本没有)没有语法问题,它只是使myFunction 成为一个元组(就像在任何其他情况下一样)
    • 这里需要括号,因为Python不知道意图是lambda a, b: a + b, b - a, a * blambda a, b: (a + b, b - a), a * b还是lambda a, b: (a + b, b - a, a * b)
    • @DeepSpace:好的,那么需要程序员使用括号表示 lambda 应该返回 tuple 的问题的名称是什么?
    • @DeepSpace 是对的,问题在于分组。当您执行myfunction = lambda x:x, x 时,这将创建一个元组,其中包含第一项中的函数和作为第二个元素的 x。因此 myfunction 是一个包含函数的元组,而不是函数。
    • @quamrana: 这叫operator precedence
    猜你喜欢
    • 1970-01-01
    • 2021-07-17
    • 2019-11-11
    • 2021-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-19
    • 1970-01-01
    相关资源
    最近更新 更多