之前我创建了一个递归函数来找到列表的乘积。
现在我创建了相同的函数,但是使用了reduce
函数和lambda
。
当我运行这段代码时,我得到了正确的答案。
items = [1, 2, 3, 4, 10]
print(reduce(lambda x, y: x*y, items))
然而,当我传入一个空列表时,会出现错误 - reduce() of empty sequence with no initial value
。这是为什么?
当我创建递归函数时,我编写了处理空列表的代码,那么问题在于reduce函数是否设计用于处理空列表?还是有其他原因?
我似乎找不到任何关于这个问题的解释或在线问题,只能找到针对特定人员问题的解决方案,没有解释。
initializer
为None
,则使用iterable[0]
作为初始化器,但在您的情况下,[][0]
不存在,因此出现错误。 - Guimoute