Python:理解带有两个变量的lambda表达式

3 投票
1 回答
13826 浏览
提问于 2025-04-18 05:16

在寻找简洁的方法来计算一个列表的乘积时,我对这个回答有点困惑。这里是相关的代码:

reduce(lambda x,y:x*y,[3,4,5])

有人能解释一下为什么这样写可以吗?我对使用涉及一个变量的lambda表达式比较熟悉(比如在排序时使用自定义比较函数),但对这个是怎么工作的感到困惑。

1 个回答

11

lambda x,y: x*y 是一个 匿名函数,它的功能和下面的代码是一样的:

def foo(x, y):
    return x*y

要理解它在 reduce(lambda ...) 中的用法,可以看看来自 官方文档的例子:

使用 reduce(lambda x, y: x+y, [1, 2, 3, 4, 5]) 计算的结果是 ((((1+2)+3)+4)+5)。也就是说,它把列表里的数字一个个加起来。

同样,reduce(lambda x,y:x*y,[3,4,5]) 计算的结果是 ((3*4)*5),也就是把列表里的数字一个个相乘。


撰写回答