<p>函数<strong>导数</strong>计算多项式的导数;每个项的阶数需要减少1,每个项必须乘以上一个阶数,阶数[0]处的项需要删除。你知道吗</p>
<p>此代码</p>
<pre><code>lst = [1,2,3] """This list represents the polynomial 3x^2+2x+1"""
"""This function moves each entry one index down and removes the last
entry"""
def move(lst):
copy = list(lst)
for i in range(len(lst)):
lst[i-1] = copy[i]
del lst[-1]
print lst
move(lst)
</code></pre>
<p>产生以下结果:</p>
<pre><code>Samuels-MacBook:python barnicle$ python problemset2.py
[2, 3]
</code></pre>
<p>此代码:</p>
<pre><code>def derivative(poly):
copy = list(poly)
degree = 0
for i in range(len(poly)):
i = degree*(i+1)
poly[i-1] = copy[i]
degree += 1
del poly[-1]
print poly
derivative(lst)
</code></pre>
<p>产生此错误:</p>
<pre><code>Samuels-MacBook:python barnicle$ python problemset2.py
Traceback (most recent call last): File "problemset2.py", line 59,
in <module>
derivative(lst) File "problemset2.py", line 55, in derivative
poly[i-1] = copy[i] IndexError: list index out of range
</code></pre>
<p>所以,我想出来了。这是我新的工作函数,重命名为ddx2:</p>
<pre><code>lst = [0,3,5,4] #lst represents the polynomial 4x^3+3x^2+5x
def ddx2(lst):
for i in range(len(lst)):
lst[i] = lst[i]*i
if i != 0:
lst[i-1] = lst[i]
del lst[-1]
print lst
ddx2(lst) #Here I call the function
</code></pre>
<p>当我调用函数时,我得到了正确格式的正确导数,即[3,10,12]。我想我收到的错误信息是因为我试图在退出循环之前缩短列表的长度。你知道吗</p>