2016-10-18 4 views
-2

Diese Zeilen meines Codes accesing„-Liste Indizes müssen ganze Zahlen sein, nicht auflisten“, während Elemente einer Liste von Listen

v_recorrido= [[4, 45], [4, 15], [4, 45]]  

    t=0 
    for i in v_recorrido: 
     seg = 60*v_recorrido[i][0] + v_recorrido[i][1] 

werfen mir diese Fehlermeldung:

TypeError: list indices must be integers, not list

Warum? Ich bin neu in Python (kommt hauptsächlich aus C++), aber ich habe die Dokumentation für die Syntax überprüft und es scheint richtig zu sein.

+1

Haben Sie sich auf die [Dokumentation] (https://docs.python.org/3/reference/compound_stmts.html#the-for-statement) für die 'for' Aussage? Oder das [Tutorial] (https://docs.python.org/3/tutorial/controlflow.html#for-statements) ausgecheckt? Dieses Verhalten ist _extrem gründlich dokumentiert_. – TigerhawkT3

+0

Es wäre auch hilfreich gewesen, den genauen Titel dieser Frage in eine Google-Suche anstatt in SOs Fragefeld einzutragen. – TigerhawkT3

Antwort

0

Python für Schleifen werden in einigen anderen Sprachen als "for-each" -Schleifen bezeichnet. Das heißt, i in jeder Iteration ist kein Index, sondern das eigentliche Element in v_recorrido. Also:

seg = 60*i[0] + i[1] 
0
for i in v_recorrido: 
    seg = 60*v_recorrido[i][0] + v_recorrido[i][1] 

Dies ist, was ist in einigen Sprachen genannt für-jede Schleife, nimmt die Iterationsvariable Bedeutung auf dem Wert jedes der Elemente, der Index des Elements. Der Fehler tritt auf, weil Sie versuchen, v_recorrido mit seinen Elementen zu indizieren.

Ändern Sie es an:

for i in v_recorrido: 
    seg = 60*i[0] + i[1] 
0

In Ihrem Beispiel ist i eigentlich ein Listenelement. In der ersten Iteration ist es gleich [4, 45], dann [4, 15] und schließlich [4, 45].

Sie suchen möglicherweise nach einem Bereich, der der Länge von v_recorrido entspricht. Wie:

for i in range(len(v_recorrido)): 
    .... 
Verwandte Themen