241

Python のsum()関数は、イテラブルで数値の合計を返します。

sum([3,4,5]) == 3 + 4 + 5 == 12

代わりに製品を返す関数を探しています。

somelib.somefunc([3,4,5]) == 3 * 4 * 5 == 60

そのような関数が存在すると確信していますが、見つけることができません。

4

8 に答える 8

227

実際、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)
于 2009-02-27T16:13:48.363 に答える
44

prod()あなたが求めていることを実行するinnumpyがあります。

于 2011-06-15T21:33:14.273 に答える
43

組み込みのものはありませんが、ここに示すように、独自のものを簡単に作成できます。

import operator
def prod(factors):
    return reduce(operator.mul, factors, 1)

この質問への回答を参照してください。

リスト内のデータ操作に適した Python モジュールはどれですか?

于 2009-02-27T16:11:54.843 に答える
26
Numeric.product 

( また

reduce(lambda x,y:x*y,[3,4,5])

)

于 2009-02-27T16:09:09.717 に答える
24

これを使って

def prod(iterable):
    p = 1
    for n in iterable:
        p *= n
    return p

組み込みprod関数がないため。

于 2009-02-27T16:10:46.217 に答える
2

functools.reduce()を使用した上記の回答aおよびbと numpy.prod() を使用した回答を好みますが、 itertools.accumulate ( )を使用したさらに別のソリューションを次に示します。

import itertools
import operator
prod = list(itertools.accumulate((3, 4, 5), operator.mul))[-1]
于 2017-11-30T18:55:29.543 に答える