2016-10-18 36 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)): 
    .... 
相關問題