Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Reduce函数不';不要处理空列表_Python_List_Lambda_Reduce - Fatal编程技术网

Python Reduce函数不';不要处理空列表

Python Reduce函数不';不要处理空列表,python,list,lambda,reduce,Python,List,Lambda,Reduce,我之前创建了一个递归函数来查找列表的乘积。 现在我创建了相同的函数,但使用了reduce函数和lamdba 当我运行这段代码时,我得到了正确的答案 items = [1, 2, 3, 4, 10] print(reduce(lambda x, y: x*y, items)) 但是,当我给出一个空列表时,会出现一个错误-reduce(),它是没有初始值的空序列。为什么会这样 当我创建递归函数时,我创建了处理空列表的代码,reduce函数的问题在于它不是设计用来处理空列表的吗?还是有其他原因 我似

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

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

items = [1, 2, 3, 4, 10]
print(reduce(lambda x, y: x*y, items))
但是,当我给出一个空列表时,会出现一个错误-
reduce(),它是没有初始值的空序列。为什么会这样

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

我似乎在网上找不到任何问题或任何东西来解释原因,我只能找到有针对特定人员问题的解决方案的问题,没有解释。

如以下所述:

如果存在可选初始值设定项,则该初始值设定项将放置在计算中iterable的项之前,并在iterable为空时用作默认值。如果未给出初始值设定项,并且iterable只包含一项,则返回第一项

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

>>> reduce(lambda x, y: x*y, [], 1)
1
reduce()。如果序列中没有值,也没有显式值可从中开始,则无法开始操作,并且将没有有效的返回值。指定一个显式初始值,以允许它以空序列运行:

print (reduce(lambda x, y: x*y, items, 1))

啊,好吧,我很困惑,因为我发现了一个reduce的代码示例,其中包含了参数(函数、iterable、初始值设定项)。我以为这个列表不知怎么被用作初始值设定项,但是谢谢你的澄清@如果
初始值设定项为None
,则使用Chris
iterable[0]
作为初始值设定项,但在您的情况下,
[[0]
不存在,因此出现错误。