<h2><strong>更新:</strong></h2>
<p>在Python3.8中,<em>prod</em>函数被添加到<em>math</em>模块中。见:<a href="https://docs.python.org/3.8/library/math.html#math.prod" rel="noreferrer">math.prod()</a></p>
<h2>旧版信息:Python 3.7及更早版本</h2>
<p>您正在寻找的函数将被称为<em>prod()</em>或<em>product()</em>,但Python没有该函数。所以,你需要写你自己的(这很容易)</p>
<h2>关于prod()的声明</h2>
<p>是的,没错。Guido <a href="http://bugs.python.org/issue1093" rel="noreferrer">rejected the idea</a>用于内置prod()函数,因为他认为很少需要它</p>
<h2>用reduce()替换</h2>
<p>正如你所建议的,使用<a href="https://docs.python.org/2.7/library/functions.html#reduce" rel="noreferrer"><em>reduce()</em></a>和<a href="https://docs.python.org/3/library/operator.html#operator.mul" rel="noreferrer"><em>operator.mul()</em></a>制作你自己的并不难:</p>
<pre><code>from functools import reduce # Required in Python 3
import operator
def prod(iterable):
return reduce(operator.mul, iterable, 1)
>>> prod(range(1, 5))
24
</code></pre>
<p>注意,在Python 3中,<a href="https://docs.python.org/3/library/functools.html#functools.reduce" rel="noreferrer"><em>reduce()</em></a>函数被移动到了<a href="https://docs.python.org/3/library/functools.html" rel="noreferrer">functools module</a></p>
<h2>特殊情况:阶乘</h2>
<p>作为旁注,<em>prod()</em>的主要激励用例是计算阶乘。我们在<a href="https://docs.python.org/2.7/library/math.html#math.factorial" rel="noreferrer">math module</a>中已经得到支持:</p>
<pre><code>>>> import math
>>> math.factorial(10)
3628800
</code></pre>
<h2>对数替代</h2>
<p>如果您的数据由浮点组成,则可以使用带有指数和对数的<em>sum()</em>计算乘积:</p>
<pre><code>>>> 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
</code></pre>
<p>注意,<em>log()</em>的使用要求所有输入均为正</p>