【问题标题】:Python index error when trying to use list.insert尝试使用 list.insert 时出现 Python 索引错误
【发布时间】: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


【解决方案1】:

错误行中有六个索引操作(例如satellite_output.x[k]);其中一个可能导致错误,而不是插入操作。

错误消息没有它可能的帮助。

【讨论】:

  • 确实你应该检查你正在使用的所有数组,我敢打赌,超出范围的例外就在它们身上。
  • 第 49 行是一个 .append,其中包含使用相同索引的相同计算。注释掉第 54 行和取消注释第 49 行不会给我任何索引错误。如果您愿意,我可以显示一些调试输出,表明数据确实存在于我的 satellite_output.x 中。
  • 我明白了。 :D 我需要做的是确保当我的距离最小化到我正在寻找的精度时,我需要设置我的 x、y、z vech 坐标,以便在下一个时期使用新的近似笛卡尔坐标。感谢所有回复,很抱歉浪费了您一点时间在如此琐碎的事情上。
【解决方案2】:

我明白了。 :D

我需要做的是确保当我的距离最小化到我正在寻找的精度时,我需要设置我的 x、y、z vech 坐标,以便在下一个时期使用新的近似笛卡尔坐标。

感谢所有回复,很抱歉浪费了您一点时间在如此琐碎的事情上。

【讨论】:

    猜你喜欢
    • 2021-03-15
    • 2020-10-25
    • 1970-01-01
    • 2013-02-14
    • 2019-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-21
    相关资源
    最近更新 更多