1. ホーム
  2. python

[解決済み] Pythonに組み込みのproduct()はありますか?[重複しています]。

2022-03-04 01:19:57

質問

チュートリアルや本に目を通しましたが、組み込みの積関数、つまりsum()と同じタイプの関数についての言及は見つかりませんでしたが、次のようなものは見つかりました。 prod() .

をインポートして、リスト内のアイテムのプロダクトを見つけるしかないのでしょうか? mul() 演算子を使うことができますか?

どのように解決するのですか?

発音について

はい、その通りです。 グイドー 却下 は、ほとんど必要ないと考えていたからです。

Python 3.8 アップデート

Python 3.8では。 prod() が math モジュールに追加されました。

>>> from math import prod
>>> prod(range(1, 11))
3628800

reduce()を使った代替案

ご指摘のように reduce() 演算子.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