Güncelleme:
Python 3.8'de, prod fonksiyonu math modülüne eklendi . Bkz . Math.prod () .
Eski bilgiler: Python 3.7 ve öncesi
Aradığınız işleve prod () veya product () denir, ancak Python'un bu işlevi yoktur. Yani, kendi yazmanız gerekir (ki bu kolay).
Prod () ile ilgili duyuru
Evet bu doğru. Guido , yerleşik bir prod () işlevi fikrini reddetti çünkü nadiren gerekli olduğunu düşündü.
Reduce () ile alternatif
Önerdiğiniz gibi, reduce () ve operator.mul () kullanarak kendi hesabınızı oluşturmak zor değildir :
from functools import reduce # Required in Python 3
def prod(iterable):
return reduce(operator.mul, iterable, 1)
>>> prod(range(1, 5))
24
Python 3'te reduce () işlevinin functools modülüne taşındığını unutmayın .
Özel durum: Faktöriyeller
Bir yan not olarak, prod () için birincil motive edici kullanım örneği faktöriyelleri hesaplamaktır. Matematik modülünde bunun için zaten desteğimiz var :
>>> import math
>>> math.factorial(10)
3628800
Logaritma ile alternatif
Verileriniz şamandıralardan oluşuyorsa, üs ve logaritmalarla sum () kullanarak bir ürünü hesaplayabilirsiniz :
>>> 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 () kullanımı, tüm girişlerin pozitif olmasını gerektirir.