擅长:python、mysql、java
<p>以下是numpy prod函数文档的链接:</p>
<p><a href="http://docs.scipy.org/doc/numpy/reference/generated/numpy.prod.html#numpy.prod" rel="nofollow">numpy.prod</a></p>
<p>如果您转到该页的底部,您将看到最后一个示例,即当x(函数的给定参数)是无符号整数时,返回的结果是一个<em>默认平台整数</em>。因此,当结果超过可以存储在32位整数中的值时,numpy不会像python通常那样将结果转换为long类型。所以你得到了整数溢出。在</p>
<p>如果声明函数:</p>
<pre><code>def fact(n): return 1 if n == 1 else (n * fact(n-1))
</code></pre>
<p>然后做:</p>
^{pr2}$
<p>你会得到:</p>
<pre><code>2432902008176640000L
</code></pre>
<p>这是20!的正确值!。在</p>
<p>顺便说一句,做:</p>
<pre><code>lst = []
for i in range(1,n+1):
lst.append(i)
</code></pre>
<p>不太理想。Python的range函数可以很容易地做到这一点!尝试:</p>
<pre><code>lst = range(1, n + 1)
</code></pre>
<p>你已经在你的for循环中这样做了!您可以在解释器中进行测试:</p>
<pre><code>>>> range(1, 20 + 1)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
</code></pre>