访问列表列表的元素时"list indices must be integers, not list"



这几行代码

    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 index必须是整数,而不是list

为什么?我是Python的新手(主要来自c++),但我已经检查了语法文档,它似乎是正确的。

Python的for循环在其他一些语言中被描述为"for-each"循环。也就是说,每次迭代中的i不是索引,而是v_recorrido中的实际元素。所以:

seg = 60*i[0] + i[1]
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]

在您的示例中,i实际上是一个列表项。在第一次迭代中,它等于[4,45],然后等于[4,15],最后等于[4,45]。

您可能要寻找的是迭代等于v_recorrido长度的范围。如:

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

最新更新