尝试访问第 N 个项目时“IndexError: list index out of range”是否意味着我的列表少于 N 个项目?

新手上路,请多包涵

我告诉我的程序打印输出的第 53 行。这个错误是否告诉我没有那么多行,因此无法打印出来?

原文由 Tyler 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 927
2 个回答

如果您有一个包含 53 个项目的列表,则最后一个是 thelist[52] 因为索引从 0 开始。


来自 真正的 Python:了解 Python Traceback - IndexError

IndexError

当您尝试从序列中检索索引时会引发 IndexError ,例如 listtuple ,并且在序列中找不到索引. Python 文档定义了何时引发此异常:

当序列下标超出范围时引发。 ( 来源

这是一个引发 IndexError 的示例:

 test = list(range(53))
test[53]

---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-6-7879607f7f36> in <module>
      1 test = list(range(53))
----> 2 test[53]

IndexError: list index out of range

IndexError 的错误消息行并没有给你很好的信息。您可以看到您有一个序列引用,即 out of range 以及序列的类型是 list 在这种情况下。这些信息与其余的回溯相结合,通常足以帮助您快速确定如何解决问题。

原文由 Alex Martelli 发布,翻译遵循 CC BY-SA 4.0 许可协议

是的,

您正在尝试访问不存在的列表元素。

 MyList = ["item1", "item2"]
print MyList[0] # Will work
print MyList[1] # Will Work
print MyList[2] # Will crash.

你有一个差一个错误吗?

原文由 kjfletch 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题