Chr*_*ris 4 python reduce lambda list
我之前创建了一个递归函数来查找列表的产品.现在我已经创建了相同的功能,但使用了reduce函数和lamdba.
当我运行此代码时,我得到了正确的答案.
items = [1, 2, 3, 4, 10]
print(reduce(lambda x, y: x*y, items))
Run Code Online (Sandbox Code Playgroud)
但是,当我给出一个空列表时,会发生错误 - reduce() of empty sequence with no initial value.为什么是这样?
当我创建递归函数时,我创建了处理空列表的代码,reduce函数的问题只是它不是为了处理和清空列表而设计的吗?或者还有其他原因吗?
我似乎无法在网上找到问题或任何解释原因的问题,我只能找到解决该特定人员问题的问题,无需解释.
jul*_*enc 13
正如文档中所写:
如果存在可选的初始值设定项,则它将放置在计算中的iterable项之前,并在iterable为空时用作默认值.如果未给出初始化程序且iterable只包含一个项目,则返回第一个项目.
因此,如果您希望代码使用空列表,则应使用初始化程序:
>>> reduce(lambda x, y: x*y, [], 1)
1
Run Code Online (Sandbox Code Playgroud)
reduce()需要初始值才能从中开始操作.如果序列中没有值且没有显式值,那么它就无法开始操作,也没有有效的返回值.指定显式初始值,以允许它以空序列运行:
print (reduce(lambda x, y: x*y, items, 1))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2851 次 |
| 最近记录: |