2016-10-18 1 views
-2

этих строк моего кода«список индексы должны быть целыми числа, а не список», а экранные элементы списка списков

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] 

бросают мне эту ошибку:

TypeError: list indices must be integers, not list

Почему? Я новичок в Python (в основном из C++), но я проверил документацию по синтаксису, и это кажется правильным.

+1

Вы смотрели вверх [документацию] (https://docs.python.org/3/reference/compound_stmts.html#the-for-statement) для 'for' заявление? Или проверили [учебник] (https://docs.python.org/3/tutorial/controlflow.html#for-statements)? Это поведение очень тщательно документировано. – TigerhawkT3

+0

Внесение точного названия этого вопроса в поиск Google вместо того, чтобы поле «спросить вопрос» SO было бы полезно. – TigerhawkT3

ответ

0

Python для циклов - это то, что описано на некоторых других языках как «для каждого» цикла. То есть, i на каждой итерации не является индексом, а фактическим элементом в v_recorrido. Итак:

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

Это то, что в некоторых языках называется по-каждого цикла, то есть переменная итерации принимает значение каждого из элементов, а не индекс элемента. Ошибка связана с тем, что вы пытаетесь подстроить индекс v_recorrido, используя его элементы.

Изменить его:

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

В вашем примере, я на самом деле является элементом списка. На первой итерации она равна [4, 45], затем [4, 15] и, наконец, [4, 45].

Возможно, вы ищете итерацию в диапазоне, равном длине v_recorrido. Как:

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