2024-09-29 00:20:04 发布
网友
Python的^{}函数返回iterable中的数字之和
sum([3,4,5]) == 3 + 4 + 5 == 12
我正在寻找返回产品的函数
somelib.somefunc([3,4,5]) == 3 * 4 * 5 == 60
我很确定这样一个函数存在,但我找不到它
在Python3.8中,prod函数被添加到math模块中。见:math.prod()
您正在寻找的函数将被称为prod()或product(),但Python没有该函数。所以,你需要写你自己的(这很容易)
是的,没错。Guido rejected the idea用于内置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 module
作为旁注,prod()的主要激励用例是计算阶乘。我们在math module中已经得到支持:
>>> 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()的使用要求所有输入均为正
在numpy有一个^{}能满足你的要求
实际上,圭多否决了这个想法:http://bugs.python.org/issue1093
但是,正如在该期中所指出的,您可以非常轻松地制作一个:
from functools import reduce # Valid in Python 2.6+, required in Python 3 import operator reduce(operator.mul, (3, 4, 5), 1)
更新:
在Python3.8中,prod函数被添加到math模块中。见:math.prod()
旧版信息:Python 3.7及更早版本
您正在寻找的函数将被称为prod()或product(),但Python没有该函数。所以,你需要写你自己的(这很容易)
关于prod()的声明
是的,没错。Guido rejected the idea用于内置prod()函数,因为他认为很少需要它
用reduce()替换
正如你所建议的,使用reduce()和operator.mul()制作你自己的并不难:
注意,在Python 3中,reduce()函数被移动到了functools module
特殊情况:阶乘
作为旁注,prod()的主要激励用例是计算阶乘。我们在math module中已经得到支持:
对数替代
如果您的数据由浮点组成,则可以使用带有指数和对数的sum()计算乘积:
注意,log()的使用要求所有输入均为正
在numpy有一个^{} 能满足你的要求
实际上,圭多否决了这个想法:http://bugs.python.org/issue1093
但是,正如在该期中所指出的,您可以非常轻松地制作一个:
相关问题 更多 >
编程相关推荐