我告诉我的程序打印输出的第 53 行。这个错误是否告诉我没有那么多行,因此无法打印出来?
8 回答
如果您有一个包含 53 个项目的列表,那么最后一个是thelist[52]
因为索引从 0 开始。
来自Real Python:了解 Python Traceback -IndexError
:
IndexError
当
IndexError
您尝试从序列中检索索引(如 alist
或 atuple
)并且在序列中未找到该索引时会引发 。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
an 的错误消息行
IndexError
没有给你很好的信息。您可以看到您有一个序列引用,out of range
以及序列的类型是什么,list
在本例中为 a。这些信息与其余的回溯相结合,通常足以帮助您快速确定如何解决问题。
是的,
您正在尝试访问列表中不存在的元素。
MyList = ["item1", "item2"]
print MyList[0] # Will work
print MyList[1] # Will Work
print MyList[2] # Will crash.
你有过一个错误吗?
Python 索引的工作方式是它从 0 开始,因此列表的第一个数字将是 [0]。您必须打印 [52],因为起始索引是 0,因此第 53 行是[52]
.
从值中减去 1,你应该没问题。:)
是的。该序列没有第 54 项。
这是正确的。“列表索引超出范围”很可能意味着您指n-th
的是列表的元素,而列表的长度小于n
.
当您想克服此错误时,请始终牢记,索引和范围的默认值从 0 开始,因此如果项目总数为 100,则 l[99] 和 range(99) 将允许您访问最后一个元素。
每当您遇到此类错误时,请交叉检查介于/中间范围内的项目,并确保如果您获得输出它们的索引不是最后一个,那么您已经犯了上述完美错误。
如果您从文本文件中读取列表,您可能会得到最后一个空行作为列表元素。你可以像这样摆脱它:
list.pop()
for i in list:
i[12]=....
在 Python 中,索引从 0 开始。因此,如果您有一个包含 53 项的列表,list[52]
则将是列表中的最后一项。