I've been looking through a tutorial and book but I can find no mention of a built in product function i.e. of the same type as sum(), but I could not find anything such as prod()
.
Is the only way I could find the product of items in a list by importing the mul()
operator?
prod() method in Python is used to calculate the product of all the elements present in the given iterable. Most of the built-in containers in Python like list, tuple are iterables. The iterable must contain numeric value else non-numeric types may be rejected.
product() is a part of a python module itertools; a collection of tools used to handle iterators. Together all these tools form iterator algebra. Itertools will make your code stand out. Above all, it will make it more pythonic.
We can use numpy. prod() from import numpy to get the multiplication of all the numbers in the list. It returns an integer or a float value depending on the multiplication result.
In python, to multiply number, we will use the asterisk character ” * ” to multiply number. After writing the above code (how to multiply numbers in Python), Ones you will print “ number ” then the output will appear as a “ The product is: 60 ”. Here, the asterisk character is used to multiply the number.
Yes, that's right. Guido rejected the idea for a built-in prod() function because he thought it was rarely needed.
In Python 3.8, prod() was added to the math module:
>>> from math import prod >>> prod(range(1, 11)) 3628800
As you suggested, it is not hard to make your own using reduce() and operator.mul():
def prod(iterable): return reduce(operator.mul, iterable, 1) >>> prod(range(1, 5)) 24
In Python 3, the reduce() function was moved to the functools module, so you would need to add:
from functools import reduce
As a side note, the primary motivating use case for prod() is to compute factorials. We already have support for that in the math module:
>>> import math >>> math.factorial(10) 3628800
If your data consists of floats, you can compute a product using sum() with exponents and logarithms:
>>> 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
There is no product
in Python, but you can define it as
def product(iterable): return reduce(operator.mul, iterable, 1)
Or, if you have NumPy, use numpy.product
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With