我不知道爲什麼我收到以下錯誤:爲什麼我得到列表索引超出範圍錯誤?
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