据我了解,reduce 函数需要一个列表l
和一个函数f
。然后,它调用该函数f
列表的前两个元素,然后重复调用该函数f
与下一个列表元素和上一个结果。
因此,我定义了以下函数:
以下函数计算阶乘。
def fact(n):
if n == 0 or n == 1:
return 1
return fact(n-1) * n
def reduce_func(x,y):
return fact(x) * fact(y)
lst = [1, 3, 1]
print reduce(reduce_func, lst)
现在,这不应该给我((1! * 3!) * 1!) = 6
?但是,它却给出了720
. Why 720
?似乎采取阶乘6
也。但是,我需要明白为什么。
有人可以解释为什么会发生这种情况以及解决方法吗?
我基本上想计算列表中所有条目的阶乘乘积。
备份计划是运行一个循环并计算它。但是,我更喜欢使用reduce。
其他答案都很棒。我将简单地添加一个我觉得很好理解的图示示例reduce()
:
>>> reduce(lambda x,y: x+y, [47,11,42,13])
113
将计算如下:
(Source http://www.python-course.eu/lambda.php) (mirror https://web.archive.org/web/20170506153354/http://www.python-course.eu/lambda.php)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)