Prononciation
Oui, c'est ça. Guido a rejeté l'idée pour une fonction intégrée prod() parce qu'il pensait qu'elle était rarement nécessaire.
Mise à jour de Python 3.8
Dans Python 3.8, prod() a été ajouté au module mathématique :
>>> from math import prod
>>> prod(range(1, 11))
3628800
Alternative avec reduce()
Comme vous l'avez suggéré, il n'est pas difficile de faire le vôtre en utilisant réduire() y opérateur.mul() :
def prod(iterable):
return reduce(operator.mul, iterable, 1)
>>> prod(range(1, 5))
24
Dans Python 3, la fonction réduire() a été déplacée vers la fonction module functools il faut donc ajouter :
from functools import reduce
Cas spécifique : Factoriels
À titre d'information, le principal cas d'utilisation motivant la mise en œuvre de l'initiative prod() est de calculer des factorielles. Nous avons déjà un support pour cela dans le module de mathématiques :
>>> import math
>>> math.factorial(10)
3628800
Alternative avec les logarithmes
Si vos données consistent en des flottants, vous pouvez calculer un produit en utilisant somme() 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