python - <lambda>() 缺少 1 个必需的位置参数 : 'z' with lambda and reduce

标签 python python-3.x lambda functional-programming reduce

我试图了解 lambdareduce() 是如何工作的。我尝试了这些示例,但无法理解为什么这会给我错误。有人可以解释一下它是如何执行的吗?

>>> functools.reduce(lambda x,y:x+y, range(10))
45

这很好用。但是当我尝试这个时,它给了我错误:

>>> functools.reduce(lambda x,y,z:x+y+z, range(10))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: <lambda>() missing 1 required positional argument: 'z'

最佳答案

functools.reduce 需要一个有两个参数的函数。 您不能将 lambda x, y, z 作为函数传递,因为它是 3 个参数的函数。 (在 Python 中,使用错误数量的参数调用函数是错误的。functools.reduce 将调用 lambda x, y, z,仅使用 2 个参数而不是 3 个参数,所以这是一个错误。)

来自 help(functools.reduce):

reduce(...)
    reduce(function, sequence[, initial]) -> value

    Apply a function of two arguments cumulatively to the items of a sequence,
    from left to right, so as to reduce the sequence to a single value.
    For example, reduce(lambda x, y: x+y, [1, 2, 3, 4, 5]) calculates
    ((((1+2)+3)+4)+5).

关于python - <lambda>() 缺少 1 个必需的位置参数 : 'z' with lambda and reduce,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47493642/

相关文章:

python - 线程内的 print() 输出错误的值

python - 我需要从云监视日志中抓取日志并将其加载到 s3 以及从 s3 加载到数据仓库

c# - 使用 lambda 表达式左连接多个表

python - 如何在 scikit 学习管道中实现 RandomUnderSampler?

Python 3 找不到 setuptools 模块 - Ubuntu

python - 如何在 PyCharm 中将 Flask 应用程序作为包运行

python - 将数据框列中的数字缩放到相同的比例

python - 带有三元运算符的 Walrus 运算符的正确语法是什么?

linux - 简单的基本 Flask 应用程序中的权限错误权限被拒绝

c++ - lambda 队列是 C++11 中工作队列的良好设计模式吗?