【问题标题】:lambda explanation on the parameters used对所用参数的 lambda 解释
【发布时间】:2018-11-13 02:15:26
【问题描述】:

我想询问一些相当简单的关于 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 示例中的列表变量? xy 的默认值是多少(判断其中任何一个属于产品?因为我没有为“lambda 示例”初始化它的初始值,而只初始化了第二个示例。)

【问题讨论】:

  • 请注意,product = map(lambda x, y: x + y, [1,2,3,4]) 在尝试转换为列表时会出错。
  • 您似乎将map()functools.reduce() 混淆了。此外,您似乎将 product 与 sum 混淆了。
  • 对不起,我写错了代码。我应该使用 reduce,但我已经改变了它
  • 产品可以是产品价格的名称,而不仅仅是用于*的产品

标签: python list lambda


【解决方案1】:

与:

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

每次调用 lambda 函数时,x 参数是运行总数(或 累积 值),y 将是可迭代 [1, 2, 3, 4] 的连续元素。

由于您没有指定可选的 initializer 参数,x 的值将设置为可迭代对象的第一个元素(在本例中为 1)并且第一次调用lambda 以 iterable 的 second 元素开头——否则 x 将是作为初始化程序传递的值,第一次调用将通过 iterable 的第一个参数作为 @ 987654329@参数第一次。

【讨论】:

    【解决方案2】:

    python 中的map() 接受一个列表,并返回一个列表,其中每个元素都根据某个函数进行了修改。您似乎想将列表作为输入并得到一个数字,在这种情况下,map() 和 lambda 函数都不是特别有用,而简单的 for 循环可能是最好的方法。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-09
    • 1970-01-01
    • 1970-01-01
    • 2020-02-02
    • 2013-05-30
    • 2020-07-02
    • 1970-01-01
    相关资源
    最近更新 更多