有没有其他方法来获取列表的产品,而不是这样:
def prod(L):
p=1
for i in L:
p= i * p
return p
这段代码是正确的,但我需要找到另一种方法。我真的找不到它。
答案 0 :(得分:8)
使用reduce(f, iterable[, initializer])
:
>>> from operator import mul
>>> reduce(mul, [1, 2, 3], 1)
6
reduce()
抽象出以下模式:
a ⊗ b ⊗ c ⊗ d ⊗ e ...
其中⊗
是二进制(左关联)运算符,即接受两个参数的函数。
答案 1 :(得分:4)
>>> reduce(lambda x, y: x * y, [1, 2, 3], 1)
6
>>> reduce(lambda x, y: x * y, [], 1)
1
答案 2 :(得分:4)
如果您被允许使用numpy
:
import numpy as np
product = np.product([1, 2, 3]) # returns 1.0 if empty list
答案 3 :(得分:1)
def prod(array):
if len(array)==0: return 1
else: return array[0]*prod(array[1:])