2012-10-30 78 views
1

這裏是我的代碼的一部分(很大一部分)。 http://pastebin.com/KCZNkYNB嘗試使用list.insert時出現Python索引錯誤

我在設計中發生的事情是迭代這個序列,直到我計算的距離最小化1cm。我不想移動到我的下一個時代,直到那個時候,這就是爲什麼我認爲我應該使用.insert作爲我的列表。我需要覆蓋當前指數的數據。

我得到的錯誤是:在該引擎收錄文件行號54


Traceback (most recent call last): 
    File "receiver2.py", line 342, in <module> 
    main() 
    File "receiver2.py", line 244, in main 
    N.insert(k, (dec.sqrt((dec(satellite_output.x[k]) - dec(x_veh_coords[epoch]))**2 + (dec(satellite_output.y[k]) - d 
ec(y_veh_coords[epoch]))**2 + (dec(satellite_output.z[k]) - dec(z_veh_coords[epoch]))**2))) 
IndexError: list index out of range 

此錯誤對應。

我不明白的是當插入時索引超出範圍。 完整的pastebin輸出:http://pastebin.com/qKhRjn2Q 您將在輸出的底部看到最後一個「k」指數爲7,然後它達到了時期1,並增加到指數8,但隨後被索引超出範圍。至於爲什麼會發生這種情況,我感到非常困惑。我向你保證所有數據都存在,試圖插入,就好像我要推薦.insert部分並取消註釋.append,它工作正常。不幸的是,我只是意識到append是「隱藏」我需要的數據才能正確計算我的jacobian。

我希望我已經提供了足夠的信息。謝謝你盡你所能的幫助!

+1

假設k是它或範圍?嘗試分成幾行代碼。這更多的是關於如何使用調試器的問題。 – RParadox

回答

1

在錯誤行中有六個索引操作(例如satellite_output.x[k]);其中之一可能導致故障,而不是插入操作。

該錯誤消息不如它可能有用。

+0

事實上,你應該檢查你使用的所有數組,我打賭超出範圍的例外是他們。 – VicoMan

+0

第49行是一個.append,它包含使用相同索引的相同計算。評論第54行和取消註釋第49行不會給我任何索引錯誤。 我可以顯示一些調試輸出,如果您願意,我的satellite_output.x中確實存在數據。 – Jonathan

+0

我明白了。 :D 我需要做的是確保當我的距離最小化到我正在尋找的精確度時,我需要設置我的x,y,z vech座標來爲下一個時代使用新的近似笛卡爾座標。 我很欣賞所有的迴應,遺憾的是浪費了一些時間來處理那些微不足道的事情。 – Jonathan

0

我明白了。 :D

我需要做的是確保當我的距離最小化到我所期望的精度時,我需要設置我的x,y,z vech座標來爲下一個使用新的近似笛卡爾座標時代。

我很欣賞所有的迴應,遺憾的是浪費了一些時間來處理那些微不足道的事情。

相關問題