Ich bin mir nicht sicher, warum ich die folgende Störung erhalte:Warum erhalte ich einen Listenindex außerhalb des Bereichsfehlers?
builtins.IndexError: list index out of range
in der folgenden Zeile (Zeile 5):
C[A[key(a)]] == C[A[key(a)]] + 1
Ein Beispiel für Eingabe für diesen Code A = [2, -2, 1]
sein würde und key = lambda x: x**2
und in der Schleife auf Linie 4-5, nimmt es die Taste der Ziffer an A[a]
als den gewählten Index für Array C
und inkrementiert den Wert an diesem Index von 1
. Zum Beispiel: C[A[key(0)]]
oder C[4]
ist 0
, und es wird auf 1
erhöht.
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
Mehr zu dem Punkt, Was soll diese Linie * tun *? Sie führen einen Vergleich durch, aber ordnen das Ergebnis nicht zu. Meinst du die Zuordnung ('=', nicht '==')? – jonrsharpe
Auch mit nur =, bekomme ich den gleichen Fehler. –
Nun, ja; Der Schlüsselfehler tritt vor einem Vergleich oder einer Zuweisung auf. Aber denken Sie an den Fall von A == [2, -2, 1], wenn "a == 2". Was ist 'A [4]'? Entweder schreibe dein Beispiel auf Papier oder verwende z. http://pythontorer.com/visualize.html, um es zu durchlaufen. – jonrsharpe