原文: 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
通常,列表的索引范围是 0
到 n-1
,其中 n
是列表中值的总数。
上面列表的总值为 4
,索引范围为 0
到 3
。
现在,让我们尝试使用负索引访问一个项目。
假设我想通过使用负索引来访问列表中的第一项 “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 解释器打印位置 0
到 4
的值。
但是,位置 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)
指定,表示位置 0
到 4
,没有任何东西可以打印出来,因此解释器会抛出错误。
解决此问题的一种方法是减小 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 认证。你将通过一种对初学者友好的互动方式学习,你还将构建五个项目以巩固所学的知识。
感谢你阅读本文,祝你编程愉快!