【发布时间】:2012-10-30 18:09:07
【问题描述】:
这是我的代码的一部分(很大一部分)。 http://pastebin.com/KCZNkYNB
按照设计,我正在发生的事情是迭代这个序列,直到我计算的距离最小化 1 厘米。在那之前我不想进入下一个时代,这就是为什么我认为我应该使用 .insert 作为我的列表。我需要覆盖当前索引处的数据。
我得到的错误是:
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 文件中的第 54 行。
我不明白插入时索引是如何超出范围的。 完整的 pastebin 输出:http://pastebin.com/qKhRjn2Q 您将在该输出的底部看到最后一个“k”索引为 7,然后它到达 epoch 1,并递增到索引 8,但随后因索引超出范围而报废。我对为什么会发生这种情况感到非常困惑。我向您保证,所有试图插入的数据确实存在,就好像我要推荐 .insert 部分并取消注释 .append 一样,它工作正常。不幸的是,我刚刚意识到 append 正在“隐藏”我需要的数据,以便正确计算我的 jacobian。
我希望我已经提供了足够的信息。感谢您提供的任何帮助!
【问题讨论】:
-
假设 k 是超出范围还是范围?尝试将代码分成几行。这更像是一个关于如何使用调试器的问题。
标签: python insert indexing range