我不知道为什么我收到以下错误:为什么我得到列表索引超出范围错误?
builtins.IndexError: list index out of range
在以下行(5号线):
C[A[key(a)]] == C[A[key(a)]] + 1
此代码输入的一个例子是A = [2, -2, 1]
和key = lambda x: x**2
,并在第4-5行的循环中,将项目密钥A[a]
作为数组C
的选定索引,并将该索引处的值递增1
。例如:C[A[key(0)]]
或C[4]
,是0
,它增加到1
。
def key_positions(A, key):
k = key(max(A, key = key))
C = [0] * (k+1)
for a in A:
C[A[key(a)]] == C[A[key(a)]] + 1
for i in range(0, k):
sum = C[i]
return C
更重要的一点,这条线应该做什么*做*?您正在进行比较,但未分配结果。你的意思是赋值('=',而不是'==')? – jonrsharpe
即使只是=,我也会得到同样的错误。 –
嗯,是的;关键错误发生在比较或分配之前。但考虑'A == [2,-2,1]'的情况,当'a == 2'时。什么是'A [4]'?无论是在纸上写下你的例子还是使用例如http://pythontutor.com/visualize.html来逐步完成它。 – jonrsharpe