擅长:python、mysql、java
<p>从<a href="https://docs.python.org/2/tutorial/controlflow.html#for-statements" rel="nofollow">the python docs</a>开始,不应更改正在迭代的列表:</p>
<blockquote>
<p>If you need to modify the sequence you are iterating over while inside
the loop (for example to duplicate selected items), it is recommended
that you first make a copy. Iterating over a sequence does not
implicitly make a copy.</p>
</blockquote>
<p>在本例中,您甚至不使用循环变量<code>payment</code>,因此您可以稍微清理一下循环。这应该是有效的:</p>
<pre><code>N = len(CashFlow)
for j in range(N):
NPV = 0
for i in range(j, N):
NPV += CashFlow[i] / (1+MonthlyInterest) ** (i - j)
NPV = round (NPV, 0)
ListNPV.append(NPV)
print 'CashFlow = ', CashFlow
print 'ListNPV =', ListNPV
</code></pre>