Python 列表索引越界 - 如何修复 IndexError?

2025年1月5日 | 阅读6分钟

引言

在本教程中,我们将学习 Python 列表索引越界以及如何修复 IndexError。 “索引越界”错误通常在使用列表和 for 循环时发生。您知道,在 Python 中,当您尝试使用列表有效索引范围之外的参数来访问元素时,您实际上是在告诉程序检索不存在的内容。是的,这会导致错误。这是解释器表明预期列表大小与可用实际索引不匹配的方式。

让我们看看循环可能导致列表越界的各种方式,以及如何避免它或在出现此错误时正确处理。

什么是 IndexError?

当我们在 Python 中尝试访问列表索引范围之外的索引处的元素时,就会发生列表索引错误。 Python 中列表的范围是 [0, n-1]。其中,n 是列表中的项目数。

“列表索引越界”错误的原因是什么?

由于 Python 使用零基索引,当您尝试访问索引小于 0 或等于或大于列表长度的元素时,Python 将会用此错误通知您,测得的值大于允许的长度。以下是一些出现此错误的情况:

1. 错误的循环索引

如果在循环中使用的索引比列表长度大,则会发生 IndexError:list Index Out of Range 错误。

程序代码

在此,我们提供了一个程序代码,以显示由于错误的循环索引而导致的列表索引越界错误。在此代码中,循环运行 7 次,在第七次迭代中,将访问列表中不存在的元素 [6],并因此发生错误。代码如下:

输出

现在,我们运行上面的代码并找到结果。输出如下:

ERROR!
1
3
5
7
8
9
Traceback (most recent call last):
  File "<string>", line 3, in <module>
IndexError: list index out of range

2. 循环内列表更改

如果您在循环中更改列表(例如,删除元素),则循环将遍历新列表,从而导致错误。

程序代码

在此,我们提供了一个程序代码,以显示由于循环内列表更改而导致的列表索引越界错误。在此代码中,第三次迭代删除了一个元素,并将列表长度减至 3。但循环再次继续,并发生错误。代码如下:

输出

ERROR!
10
30
40	
20
80
70
Traceback (most recent call last):
  File "<string>", line 5, in <module>
IndexError: list index out of range

3. 列表长度计算错误

如果在 for 循环中存在错误的条件,那么您将遇到错误。

程序代码

在此,我们提供了一个程序代码,以显示由于列表长度计算不正确而导致的列表索引越界错误。在此代码中,由于访问不存在的列表 [6] 而导致错误。代码如下:

输出

现在,我们运行上面的代码并找到结果。输出如下:

ERROR!
10
30
50
20
40
70
Traceback (most recent call last):
  File "<string>", line 3, in <module>
IndexError: list index out of range

如何解决“列表索引越界”错误?

列表索引越界可以通过确保列表中的所有条目都在列表的索引范围内来修复。这可以通过使用 range() 函数和 len() 函数来完成。range() 函数返回一个数字数组,从 0 开始,以传递的参数作为结束。Python 中的 len() 函数返回传递参数的长度。将这两种方法结合使用,可以安全地迭代到最后一个内容,以确保您处于有效索引中并避免 IndexError。

程序代码

在此,我们提供了一个程序代码,以显示如何在 Python 中通过使用 len() 和 range() 函数来解决索引越界问题。代码如下:

输出

现在,我们运行上面的代码并找到结果。输出如下:

1
3
5
7
8
9

在此,我们讨论了解决此列表索引越界错误的几种其他方法,如下所示:

1. 使用 enumerate() 函数

您可以使用 enumerate() 函数来迭代列表的索引和元素。这可以确保您在列表的限制范围内。

程序代码

在此,我们提供了一个程序代码,以显示如何在 Python 中通过使用 enumerate() 函数来解决索引越界问题。代码如下:

输出

现在,我们运行上面的代码并找到结果。输出如下:

Index 0: 5
Index 1: 67
Index 2: 19
Index 3: 71
Index 4: 205
Index 5: 34
Index 6: 56

2. 列表长度计算

在迭代列表之前,最好预先计算列表的长度。

程序代码

在此,我们提供了一个程序代码,以显示如何在 Python 中通过使用列表长度计算来解决索引越界问题。代码如下:

输出

现在,我们运行上面的代码并找到结果。输出如下:

5
67
19
71
205
34
56

3. 处理列表修改

当您在循环中更新列表时,处理列表修改的最佳方法是使用列表的副本或不同的数据结构,以避免更改循环的行为。

程序代码

在此,我们提供了一个程序代码,以显示如何在 Python 中通过在循环中更新列表来解决索引越界问题。代码如下:

输出

现在,我们运行上面的代码并找到结果。输出如下:

5
67
19
71
205
34
56

4. 使用 try-catch 块

您可以将输入包装在 try-catch 块中以捕获异常并使其正常工作。

程序代码

在此,我们提供了一个程序代码,以显示如何在 Python 中通过使用 try-catch 块来解决索引越界问题。代码如下:

输出

现在,我们运行上面的代码并找到结果。输出如下:

5
67
19
71
205
34
56
An Error is occurred: list index out of range
Index 7 is out of the range
An Error is occurred: list index out of range
Index 8 is out of the range

结论

在本教程中,我们将学习 Python 列表索引越界以及如何修复 IndexError。我们了解了 Python 中列表索引越界错误的原因以及解决它的几种方法,并附带了一些示例。