首页 > 解决方案 > 对所用参数的 lambda 解释

问题描述

我想询问一些关于 lambda 参数的相当简单的事情。

我了解 lambda 的功能是如何工作的,但是当涉及到这一点时,我对哪个是哪个参数感到困惑。

例子:

from functools import reduce

# Simple example so that I could understand based on the explanation from experts
# here. You could modify as however you wish to explain it.
product = reduce(lambda x, y: x + y, [1,2,3,4])

这是一个较短的版本来比较它:

product = 0
for x in [1,2,3,4]:
    product = product + x
print(product)

现在,我的问题是x列表y的变量还是 lambda 的第一个示例中的列表变量?x或者的默认值是什么y(判断其中一个属于产品?因为我没有为“lambda示例”初始化它的初始值,而只初始化了第二个示例。)

标签: pythonlistlambda

解决方案


和:

product = reduce(lambda x, y: x + y, [1, 2, 3, 4])

每次调用 lambda 函数时,x参数都是运行总和(或累积值),并且y将是 iterable 的连续元素[1, 2, 3, 4]

由于您没有指定可选的初始值设定项参数,因此值x将设置为可迭代对象的第一个元素(1在本例中),并且第一次调用lambdawith 以可迭代对象的第二个元素开始 - 否则x将是作为初始值设定项传递的值和第一次调用将第一次将可迭代的第一个参数作为y参数传递。


推荐阅读