Aggiornare:
In Python 3.8, la funzione prod è stata aggiunta al modulo matematico . Vedi: math.prod () .
Informazioni precedenti: Python 3.7 e precedenti
La funzione che stai cercando si chiamerebbe prod () o product () ma Python non ha quella funzione. Quindi, devi scrivere il tuo (che è facile).
Pronuncia su prod ()
Sì, è giusto. Guido respinse l'idea di una funzione prod () incorporata perché pensava che raramente fosse necessaria.
Alternativa con reduce ()
Come hai suggerito, non è difficile crearne uno tuo usando riduci () 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
Nota, in Python 3, la funzione di riduzione () è stata spostata nel modulo functools .
Caso specifico: fattoriali
Come nota a margine, il caso d'uso motivante principale per prod () è calcolare fattoriali. Abbiamo già il supporto per questo nel modulo di matematica :
>>> import math
>>> math.factorial(10)
3628800
Alternativa ai logaritmi
Se i tuoi dati sono costituiti da float, puoi calcolare un prodotto usando sum () con esponenti e logaritmi:
>>> 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
Nota, l'uso di log () richiede che tutti gli input siano positivi.