Python 的sum()函数返回迭代中数字的总和。
sum()
sum([3,4,5]) == 3 + 4 + 5 == 12
我正在寻找返回产品的函数。
somelib.somefunc([3,4,5]) == 3 * 4 * 5 == 60
我很确定这样的功能存在,但我找不到它。
在 Python 3.8 中, prod 函数被添加到 数学 模块中。请参阅:math.prod()。
您正在寻找的函数将被称为 prod() 或 product() 但 Python 没有该函数。所以,你需要自己写(这很容易)。
是的,这是正确的。Guido拒绝了内置 prod() 函数的想法,因为他认为它很少需要。
正如您所建议的,使用reduce() 和 operator.mul() 自己制作并不难:
from functools import reduce # Required in Python 3 import operator def prod(iterable): return reduce(operator.mul, iterable, 1) >>> prod(range(1, 5)) 24
请注意,在 Python 3 中, reduce() 函数已移至functools 模块。
附带说明一下, prod() 的主要激励用例是计算阶乘。我们已经在数学模块中提供了支持:
>>> import math >>> math.factorial(10) 3628800
如果您的数据由浮点数组成,您可以使用 sum() 与指数和对数计算乘积:
>>> from math import log, exp >>> data = [1.2, 1.5, 2.5, 0.9, 14.2, 3.8] >>> exp(sum(map(log, data))) 218.53799999999993 >>> 1.2 * 1.5 * 2.5 * 0.9 * 14.2 * 3.8 218.53799999999998
请注意,使用 log() 要求所有输入都是正数。