是否有任何其他方式来获取列表的产物,不是这样:
def prod(L):
p=1
for i in L:
p= i * p
return p
这段代码是正确的,但我需要找到另一种方式来做到这一点。我真的找不到它。
是否有任何其他方式来获取列表的产物,不是这样:
def prod(L):
p=1
for i in L:
p= i * p
return p
这段代码是正确的,但我需要找到另一种方式来做到这一点。我真的找不到它。
reduce(f, iterable[, initializer])
使用:
>>> from operator import mul
>>> reduce(mul, [1, 2, 3], 1)
6
reduce()
摘要在下面的模式: a ⊗ b ⊗ c ⊗ d ⊗ e ...
其中⊗
是二进制(左结合)运算符,即,接受两个参数的函数。
>>> reduce(lambda x, y: x * y, [1, 2, 3], 1)
6
>>> reduce(lambda x, y: x * y, [], 1)
1
def prod(array):
if len(array)==0: return 1
else: return array[0]*prod(array[1:])
如果你允许使用numpy
:
import numpy as np
product = np.product([1, 2, 3]) # returns 1.0 if empty list
检查发现的问题......,我不知道是不是重复的,但我没有找到答案我需要那里。 – Reginald 2012-08-04 10:23:43
@jamylak我试了几次,输出是正确的。 – Reginald 2012-08-04 10:24:46
@jamylak为什么不呢? – phant0m 2012-08-04 12:17:49