2012-10-30 57 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坐标来为下一个使用新的近似笛卡尔坐标时代。

我很欣赏所有的回应,遗憾的是浪费了一些时间来处理那些微不足道的事情。

相关问题