Python のsum()
関数は、イテラブルで数値の合計を返します。
sum([3,4,5]) == 3 + 4 + 5 == 12
代わりに製品を返す関数を探しています。
somelib.somefunc([3,4,5]) == 3 * 4 * 5 == 60
そのような関数が存在すると確信していますが、見つけることができません。
実際、Guidoはそのアイデアを拒否しました: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)
prod()
あなたが求めていることを実行するinnumpyがあります。
組み込みのものはありませんが、ここに示すように、独自のものを簡単に作成できます。
import operator
def prod(factors):
return reduce(operator.mul, factors, 1)
この質問への回答を参照してください。
Numeric.product
( また
reduce(lambda x,y:x*y,[3,4,5])
)
これを使って
def prod(iterable):
p = 1
for n in iterable:
p *= n
return p
組み込みprod
関数がないため。
functools.reduce()を使用した上記の回答aおよびbと numpy.prod() を使用した回答を好みますが、 itertools.accumulate ( )を使用したさらに別のソリューションを次に示します。
import itertools
import operator
prod = list(itertools.accumulate((3, 4, 5), operator.mul))[-1]