2016-10-18 38 views
-2

我的代码“列表索引必须是整数,没有列出”,而accesing名单

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

你有抬头的'for'语句[文件](https://docs.python.org/3/reference/compound_stmts.html#the-for-statement)?或者检出[教程](https://docs.python.org/3/tutorial/controlflow.html#for-statements)?这种行为被极其彻底地记录下来。 – TigerhawkT3

+0

将这个问题的确切标题放入Google搜索中,而不是SO的“提问问题”框也会很有用。 – TigerhawkT3

回答

0

Python for循环是其他语言中描述的“for-each”循环。也就是说,每个迭代中的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] 

这就是在有些语言称为for-each循环,这意味着迭代变量的值每一个元素,而不是元素的索引的需要。该错误是因为您正在尝试使用其元素下标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)): 
    .... 
相关问题