原文: List Index Out of Range – Python Error Message Solved

在本文中,你将看到一些在 Python 中导致列表索引超出范围(list index out of range)错误的原因。

除了知道为什么会发生此错误之外,你还将学习一些避免它的方法。

让我们开始吧!

如何在 Python 中创建列表

要在 Python 中创建列表对象,你需要:

  • 给列表起个名字
  • 使用赋值运算符 =
  • 在方括号 [] 内包含 0 个或多个列表项,每个列表项都需要用逗号分隔

例如,要创建一个 names 列表,你可以执行以下操作:

names = ["Kelly", "Nelly", "Jimmy", "Lenny"]

上面的代码创建了一个名为 names 的列表,它有四个值:Kelly, Nelly, Jimmy, Lenny

如何在 Python 中检查列表的长度

要检查 Python 中列表的长度,请使用 Python 的内置 len() 方法。

len() 将返回一个整数,它是存储在列表中的项目数。

names = ["Kelly", "Nelly", "Jimmy", "Lenny"]

#创建一个名为 name_length 的变量来存储列表的长度
name_length = len(names)

#将变量的值打印到控制台
print(name_length)

#输出
#4

列表中存储了四个项目,因此列表的长度将为 4。

如何在 Python 中访问单个列表项

列表中的每个项目都有自己的索引号。

Python 和大多数现代编程语言中的索引从 0 开始。

这意味着列表中的第一项的索引为 0,第二项的索引为 1,依此类推。

你可以使用索引号来访问单个项目。

要使用其索引号访问列表中的项目,请首先写入列表的名称。然后,在方括号内放入与项目的索引号对应的整数。

以前面的示例为例,你可以通过以下方式使用其索引号访问列表中的每个项目:

names = ["Kelly", "Nelly", "Jimmy", "Lenny"]

names[0] # Kelly
names[1] # Nelly
names[2] # Jimmy
names[3] # Lenny

你还可以使用负索引来访问 Python 列表中的项目。

要访问最后一项,请使用索引值 -1。要访问倒数第二个项目,请使用索引值 -2

以下是使用负索引访问列表中每个项目的方法:

names = ["Kelly", "Nelly", "Jimmy", "Lenny"]

names[-4] # Kelly
names[-3]# Nelly
names[-2] # Jimmy
names[-1] # Lenny

为什么 Python 中会出现 Indexerror: list index out of range 错误

使用超出列表范围的索引号

当你尝试使用超出列表索引范围且不存在的值访问项目时,你将收到 Indexerror: list index out of range 错误。

当你尝试访问列表的最后一项时,或者当你使用负索引访问第一项时,这很常见。

让我们回到我们目前使用的列表。

names = ["Kelly", "Nelly", "Jimmy", "Lenny"]

假设我想访问最后一项 “Lenny”,并尝试使用以下代码进行访问:

print(names[4])

#output

#Traceback (most recent call last):
#  File "/Users/dionysialemonaki/python_articles/demo.py", line 3, in <module>
#    print(names[4])
#IndexError: list index out of range

通常,列表的索引范围是 0n-1,其中 n 是列表中值的总数。

上面列表的总值为 4,索引范围为 03

现在,让我们尝试使用负索引访问一个项目。

假设我想通过使用负索引来访问列表中的第一项 “Kelly”。

names = ["Kelly", "Nelly", "Jimmy", "Lenny"]

print(names[-5])

#output

#Traceback (most recent call last):
#  File "/Users/dionysialemonaki/python_articles/demo.py", line 3, in <module>
#    print(names[-5])
#IndexError: list index out of range

使用负索引时,列表的索引范围是 -1-n,其中 -n 是列表中包含的项目总数。

列表中的项目总数为 4,索引范围为 -1-4

在 Python for 循环中使用 range() 函数中的错误值

在遍历列表并尝试访问不存在的项目时,你将收到 Indexerror: list index out of range 错误。

发生这种情况的一个常见情况是在 Python 的 range() 函数中使用了错误的整数。

range() 函数通常采用一个整数,表示计数将停止的位置。

例如,range(5) 表示计数将从 0 开始,到 4 结束。

因此,默认情况下,计数从位置 0 开始,每次递增 1,并且该数字取决于(但不包括)计数将停止的位置。

让我们看下面的例子:

names = ["Kelly", "Nelly", "Jimmy", "Lenny"]

for name in range(5):
    print(names[name])
    
#output

#Kelly
#Nelly
#Jimmy
#Lenny
#Traceback (most recent call last):
#  File "/Users/dionysialemonaki/python_articles/demo.py", line 7, in <module>
#   print(names[name])
#IndexError: list index out of range

这里,列表 names 有四个值。

我想遍历列表并打印出每个值。

当我使用 range(5) 时,我告诉 Python 解释器打印位置 04 的值。

但是,位置 4 中没有项目。

你可以通过首先打印出位置的编号,然后打印出该位置的值来看到这一点。

#0
#Kelly
#1
#Nelly
#2
#Jimmy
#3
#Lenny
#4
#Traceback (most recent call last):
#  File "/Users/dionysialemonaki/python_articles/demo.py", line 8, in <module>
#    print(names[name])
#IndexError: list index out of range

你会看到位置 0 是 “Kelly”,位置 1 是 “Nelly”,位置 2 是 “Jimmy”,位置 3 是 “Lenny”。

当涉及到位置 4 时,它由 range(5) 指定,表示位置 04,没有任何东西可以打印出来,因此解释器会抛出错误。

解决此问题的一种方法是减小 range() 中的整数:

names = ["Kelly", "Nelly", "Jimmy", "Lenny"]

for name in range(4):
    print(name)
    print(names[name])
    
#output

#0
#Kelly
#1
#Nelly
#2
#Jimmy
#3
#Lenny

使用 for 循环时解决此问题的另一种方法是将列表的长度作为参数传递给 range() 函数。你可以使用 Python 内置函数 len() 来执行此操作,如前面部分所示:

names = ["Kelly", "Nelly", "Jimmy", "Lenny"]

for name in range(len(names)):
    print(names[name])

#output

#Kelly
#Nelly
#Jimmy
#Lenny

len() 作为参数传递给 range() 时,请确保你没有犯以下错误:

names = ["Kelly", "Nelly", "Jimmy", "Lenny"]

for name in range(len(names) + 1):
    print(names[name])

运行代码后,你将再次收到 IndexError: list index out of range 错误:

#Kelly
#Nelly
#Jimmy
#Lenny
#Traceback (most recent call last):
#  File "/Users/dionysialemonaki/python_articles/demo.py", line 4, in <module>
#    print(names[name])
#IndexError: list index out of range

总结

希望本文能让你深入了解 IndexError: list index out of range 错误发生的原因以及避免它的一些方法。

如果你想了解有关 Python 的更多信息,请查看 freeCodeCamp 的 Python 认证。你将通过一种对初学者友好的互动方式学习,你还将构建五个项目以巩固所学的知识。

感谢你阅读本文,祝你编程愉快!