是的,这是对的。Guido拒绝了内置prod()函数的想法,因为他认为很少需要它。
Python 3.8更新在Python 3.8中, prod() 已添加到math模块:
用reduce()替代>>> from math import prod>>> prod(range(1, 11))3628800
正如您建议的那样,使用
reduce() 和
operator.mul()
制作自己的东西并不难:
def prod(iterable): return reduce(operator.mul, iterable, 1)>>> prod(range(1, 5))24
在Python 3中,
reduce()
函数已移至functools模块,因此您需要添加:
具体情况:阶乘from functools import reduce
附带说明一下, prod()
的主要动机用例是计算阶乘。我们已经在math模块中对此提供了支持:
对数的替代>>> 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.8218.53799999999998
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)