Python's sum()
function returns the sum of numbers in an iterable.
sum([3,4,5]) == 3 + 4 + 5 == 12
I'm looking for the function that returns the product instead.
somelib.somefunc([3,4,5]) == 3 * 4 * 5 == 60
I'm pretty sure such a function exists, but I can't find it.
Numeric.product
( or
reduce(lambda x,y:x*y,[3,4,5])
)
Use this
def prod(iterable):
p = 1
for n in iterable:
p *= n
return p
Since there's no built-in prod
function.
There's a prod()
in numpy that does what you're asking for.
There isn't one built in, but it's simple to roll your own, as demonstrated here:
import operator
def prod(factors):
return reduce(operator.mul, factors, 1)
See answers to this question:
Which Python module is suitable for data manipulation in a list?
Perhaps not a "builtin", but I consider it builtin. anyways just use numpy
import numpy
prod_sum = numpy.prod(some_list)
I prefer the answers a and b above using functools.reduce() and the answer using numpy.prod(), but here is yet another solution using itertools.accumulate():
import itertools
import operator
prod = list(itertools.accumulate((3, 4, 5), operator.mul))[-1]
Actually, Guido vetoed the idea: http://bugs.python.org/issue1093
But, as noted in that issue, you can make one pretty easily:
from functools import reduce # Valid in Python 2.6+, required in Python 3
import operator
reduce(operator.mul, (3, 4, 5), 1)
Source: Stackoverflow.com