Оновлення:
У Python 3.8 функція prod була додана до математичного модуля. Дивіться: math.prod () .
Старіші відомості: Python 3.7 та попередній
Функцію, яку ви шукаєте, називали б prod () або product (), але Python не має такої функції. Отже, вам потрібно написати власне (що легко).
Вимова слова prod ()
Так, правильно. Гвідо відкинув ідею вбудованої функції prod (), оскільки вважав, що це рідко потрібно.
Альтернатива зі зменшенням ()
Як ви запропонували, не важко зробити свій власний за допомогою скорочення () та operator.mul () :
from functools import reduce # Required in Python 3
def prod(iterable):
return reduce(operator.mul, iterable, 1)
>>> prod(range(1, 5))
24
Зауважте, що в Python 3 функція redu () була перенесена на модуль functools .
Конкретний випадок: Фактори
Як бічне зауваження, основним мотивуючим випадком використання для 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
Зауважте, що використання журналу () вимагає, щоб усі входи були позитивними.