Aktualizacja:
W Pythonie 3.8 funkcja prod została dodana do modułu matematycznego . Zobacz: math.prod () .
Starsze informacje: Python 3.7 i wcześniejsze
Funkcja, której szukasz, nazywa się prod () lub product (), ale Python nie ma tej funkcji. Musisz więc napisać własny (co jest łatwe).
Wymowa on prod ()
Tak to prawda. Guido odrzucił pomysł wbudowanej funkcji prod (), ponieważ uważał, że rzadko jest ona potrzebna.
Alternatywnie z redukcją ()
Jak zasugerowałeś, nie jest trudno stworzyć własne za pomocą funkcji replace () i operator.mul () :
from functools import reduce # Required in Python 3
def prod(iterable):
return reduce(operator.mul, iterable, 1)
>>> prod(range(1, 5))
24
Uwaga: w Pythonie 3 funkcja zmniejszania () została przeniesiona do modułu funkools .
Przypadek szczególny: czynniki
Na marginesie, głównym motywującym zastosowaniem dla prod () jest obliczenie silni. Mamy już na to wsparcie w module matematycznym :
>>> import math
>>> math.factorial(10)
3628800
Alternatywa z logarytmami
Jeśli twoje dane składają się z liczb zmiennoprzecinkowych, możesz obliczyć produkt za pomocą sum () z wykładnikami i logarytmami:
>>> 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
Uwaga: użycie log () wymaga, aby wszystkie dane wejściowe były dodatnie.