values - Python中是否有內置的產品()?




python reduce (3)

宣言

恩,那就對了。 Guido 拒絕了內置prod()函數的想法 ,因為他認為這很少需要。

替代與減少()

正如你所建議的,使用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()的主要動機用例是計算階乘。 我們已經在數學模塊中為它提供了支持:

>>> 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

https://code.i-harness.com

這個問題在這裡已經有了答案:

我一直在瀏覽教程和書籍,但是我發現沒有提及內置的產品功能,即與sum()類型相同的類型,但是我找不到任何內容,例如prod()

通過導入mul()運算符,我能找到列表中項目的唯一產品嗎?


Python中沒有product ,但可以將其定義為

def product(iterable):
    return reduce(operator.mul, iterable, 1)

或者,如果您有NumPy,請使用numpy.product


from numpy import multiply, product
list1 = [2,2,2]
list2 = [2,2,2]
mult = 3
prod_of_lists = multiply(list1,list2)
>>>[4,4,4]
prod_of_list_by_mult = multiply(list1,mult)
>>>[6,6,6]
prod_of_single_array = product(list1)
>>>8

numpy有很多非常酷的函數列表!





product