Atualizar:
No Python 3.8, a função prod foi adicionada ao módulo de matemática . Veja: math.prod () .
Informações mais antigas: Python 3.7 e anterior
A função que você está procurando seria chamada prod () ou product (), mas o Python não tem essa função. Então, você precisa escrever o seu próprio (o que é fácil).
Pronunciamento sobre prod ()
Sim está certo. Guido rejeitou a ideia de uma função interna prod () porque achava que raramente era necessária.
Alternativa com reduzir ()
Como você sugeriu, não é difícil criar o seu próprio uso, reduzindo () e operator.mul () :
from functools import reduce # Required in Python 3
def prod(iterable):
return reduce(operator.mul, iterable, 1)
>>> prod(range(1, 5))
24
Observe que, no Python 3, a função reduzir () foi movida para o módulo functools .
Caso específico: fatoriais
Como uma observação lateral, o principal caso de uso motivador de prod () é calcular fatoriais. Já temos suporte para isso no módulo de matemática :
>>> import math
>>> math.factorial(10)
3628800
Alternativa com logaritmos
Se seus dados consistirem em flutuadores, você poderá calcular um produto usando sum () com expoentes e logaritmos:
>>> 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
Observe que o uso de log () requer que todas as entradas sejam positivas.