Mettre à jour:
Dans Python 3.8, la fonction prod a été ajoutée au module mathématique . Voir: math.prod () .
Informations plus anciennes: Python 3.7 et versions antérieures
La fonction que vous recherchez serait appelée prod () ou product () mais Python n'a pas cette fonction. Donc, vous devez écrire le vôtre (ce qui est facile).
Prononcé sur prod ()
Oui c'est vrai. Guido a rejeté l'idée d'une fonction prod () intégrée car il pensait qu'elle était rarement nécessaire.
Alternative avec réduire ()
Comme vous l'avez suggéré, il n'est pas difficile de créer le vôtre en utilisant réduire () et operator.mul () :
from functools import reduce # Required in Python 3
def prod(iterable):
return reduce(operator.mul, iterable, 1)
>>> prod(range(1, 5))
24
Notez que dans Python 3, la fonction Reduce () a été déplacée vers le module functools .
Cas spécifique: factorielles
En remarque, le principal cas d'utilisation motivant de prod () est de calculer les factorielles. Nous avons déjà un support pour cela dans le module mathématique :
>>> import math
>>> math.factorial(10)
3628800
Alternative avec logarithmes
Si vos données sont constituées de flottants, vous pouvez calculer un produit en utilisant sum () avec des exposants et des logarithmes:
>>> 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
Notez que l'utilisation de log () nécessite que toutes les entrées soient positives.