Reduce 函数不处理空列表

2024-04-02

我之前创建了一个递归函数来查找列表的乘积。 现在我创建了相同的函数,但使用reduce功能和lamdba.

当我运行这段代码时,我得到了正确的答案。

items = [1, 2, 3, 4, 10]
print(reduce(lambda x, y: x*y, items))

但是,当我给出空列表时,会发生错误 -reduce() of empty sequence with no initial value。为什么是这样?

当我创建递归函数时,我创建了处理空列表的代码,reduce 函数的问题是否只是它不是设计来处理空列表的?或者还有其他原因吗?

我似乎无法在网上找到问题或任何解释原因的内容,我只能找到解决该特定人问题的问题,没有任何解释。


正如它所写的那样文档 https://docs.python.org/2/library/functions.html#reduce:

如果存在可选初始值设定项,则在计算中将其放置在可迭代项之前,并在可迭代为空时充当默认值。如果未给出初始值设定项并且 iterable 仅包含一个项目,则返回第一个项目。

因此,如果您希望代码使用空列表,则应该使用初始值设定项:

>>> reduce(lambda x, y: x*y, [], 1)
1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Reduce 函数不处理空列表 的相关文章

随机推荐