python - Python 中有内置的 product() 吗?

标签 python list product

我一直在浏览教程和书籍,但我找不到内置产品函数的提及,即与 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/

相关文章:

python - kivy .kv 文件无法读取

java - 检查 java 中的 List<List<objects>> 中是否存在值?

php - 按价格对 Woocommerce 产品变体自定义输出进行排序

python - 随着时间的推移更新 pandas 的胜率

python - 无法在 Mac 上保存带有德语字母的 .py 文件

Python pandas如何根据特殊时间范围条件计算行数?

list - F#:存储和映射函数列表

c# - 列表的排序列表 C#

magento - 如何在 magento 中的组价格部分添加新列

php - WooCommerce 产品比较插件的更改按钮