Обновление:
В Python 3.8 в модуль math была добавлена функция prod . См .: math.prod () .
Старая информация: Python 3.7 и более ранние версии
Функция, которую вы ищете, будет называться prod () или product () , но Python не имеет этой функции. Итак, вам нужно написать свой собственный (что легко).
произношение на прод ()
Да, все верно. Гвидо отверг идею для встроенной функции prod (), потому что он думал, что она редко нужна.
Альтернатива при уменьшении ()
Как вы и предлагали, несложно сделать свой собственный, используя lower () и operator.mul () :
from functools import reduce
def prod(iterable):
return reduce(operator.mul, iterable, 1)
>>> prod(range(1, 5))
24
В Python 3 функция redu () была перемещена в модуль functools , поэтому вам необходимо добавить:
from functools import reduce
Конкретный случай: Факториалы
В качестве примечания, основной мотивирующий сценарий использования prod () - вычисление факториалов. У нас уже есть поддержка для этого в математическом модуле :
>>> import math
>>> math.factorial(10)
3628800
Альтернатива с логарифмами
Если ваши данные состоят из чисел с плавающей точкой, вы можете вычислить произведение, используя sum () с показателями и логарифмами:
>>> 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
Обратите внимание, использование log () требует, чтобы все входы были положительными.