“IndexError: list index out of range” 是不是意味着我的列表少于 N 个元素?

54 投票
7 回答
794118 浏览
提问于 2025-04-15 12:46

我让我的程序打印输出的第53行。这条错误信息是在告诉我,输出的行数没有那么多,所以无法打印出这一行吗?

7 个回答

7

Python中的索引是从0开始的,所以你列表中的第一个数字是[0]。如果你想打印出第53行的内容,你需要写成[52],因为索引是从0开始的。

只需把你想要的值减去1,就可以了。:)

36

是的,

你正在尝试访问一个列表中不存在的元素。

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

你是不是犯了一个越界错误?

87

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


来自 Real Python: 理解Python的追踪信息 - 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。这些信息,加上追踪信息的其余部分,通常足以帮助你快速找到解决问题的方法。

撰写回答