我一直在浏览教程和书籍,但我找不到内置产品函数的提及,即与 sum() 类型相同,但我找不到诸如 prod()
。
只有通过导入 mul()
运算符,我才能在列表中找到项目的乘积吗?
最佳答案
发音
是的,没错。圭多 rejected the idea内置 prod() 函数,因为他认为它很少需要。
Python 3.8 更新
在 Python 3.8 中,prod() 被添加到数学模块中:
>>> from math import prod
>>> prod(range(1, 11))
3628800
reduce() 的替代方法
正如您所建议的,使用 reduce() 制作您自己的并不难。和 operator.mul() :
def prod(iterable):
return reduce(operator.mul, iterable, 1)
>>> prod(range(1, 5))
24
在 Python 3 中,reduce()函数移至 functools module ,所以你需要添加:
from functools import reduce
具体情况:阶乘
附带说明,prod() 的主要激励用例是计算阶乘。我们已经在 math module 中提供了支持。 :
>>> import math
>>> math.factorial(10)
3628800
对数替代
如果您的数据由 float 组成,您可以使用 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
关于python - Python 中有内置的 product() 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7948291/