私はチュートリアルと本を見てきましたが、組み込みの製品関数、つまりsum()と同じタイプの言及はありませんが、prod()
などは見つかりませんでした。
mul()
演算子をインポートして、リスト内のアイテムの製品を見つけることができる唯一の方法はありますか?
はい、そうです。 Guido は組み込みprod()関数のアイデアを拒否しました 。
Python 3.8、prod()が数学モジュールに追加されました:
>>> 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.8
218.53799999999998
Pythonにはproduct
はありませんが、次のように定義できます。
def product(iterable):
return reduce(operator.mul, iterable, 1)
または、NumPyがある場合は、numpy.product
。
reduce()関数はfunctools
python 3. モジュールに移動されたため、別のアプローチをとる必要があります。
functools.reduce()
を使用して、関数にアクセスできます。
_product = functools.reduce(operator.mul, iterable, 1)
_
または、Pythonチームの精神(for
の方が読みやすいと思われるためreduce()
を削除しました)をフォローしたい場合は、ループで実行します。
_product = 1
for x in iterable:
product *= x
_
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にはリスト用の非常にクールな関数がたくさんあります!