在使用列表时避免索引错误

当您第一次使用列表时,有一种常见的错误类型。 假设您有一个包含三项的列表,您要求第四项:

motorcycles = ['honda', 'yamaha', 'suzuki']
print(motorcycles[3])

此示例导致索引错误:

Traceback (most recent call last):
  File "motorcycles.py", line 2, in <module>
    print(motorcycles[3])
          ~~~~~~~~~~~^^^
IndexError: list index out of range

Python 试图为您提供索引为 3 的项目。但是当它搜索列表时,motorcycles 中没有任何项目的索引为 3。由于列表中索引的逐一性,此错误是典型的。 人们认为第三项是项目编号 3,因为他们从 1 开始计数。但是在 Python 中,第三项是编号 2,因为它从 0 开始索引。

索引错误意味着 Python 无法在您请求的索引处找到项目。如果您的程序中出现索引错误,请尝试将您要求的索引调整一个。 然后再次运行程序,看看结果是否正确。

请记住,无论何时您想要访问列表中的最后一项,都应该使用索引 -1。 这将始终有效,即使您的列表自上次访问以来已更改大小:

motorcycles = ['honda', 'yamaha', 'suzuki']
print(motorcycles[-1])

索引 -1 始终返回列表中的最后一项,在本例中为值 'suzuki'

suzuki

这种方法唯一会导致错误的情况是当您从空列表中请求最后一项时:

motorcycles = []
print(motorcycles[-1])

motorcycles 中没有物品,因此 Python 返回另一个索引错误:

Traceback (most recent call last):
  File "motorcyles.py", line 3, in <module>
    print(motorcycles[-1])
          ~~~~~~~~~~~^^^^
IndexError: list index out of range

如果发生索引错误并且您不知道如何解决它,请尝试打印您的列表或只打印列表的长度。 您的列表可能看起来与您想象的大不相同,尤其是当它由您的程序动态管理时。 查看实际列表或列表中项目的确切数量可以帮助您解决此类逻辑错误。

自己试试
3-11.Intentional Error

如果您还没有在您的某个程序中收到索引错误,请尝试让它发生。 更改您的一个程序中的索引以产生索引错误。 确保在关闭程序之前更正错误。

总结

在本章中,您了解了什么是列表以及如何使用列表中的各个项。 您学习了如何定义列表以及如何添加和删除元素。 您学习了如何为显示目的对列表进行永久和临时排序。 您还学习了如何查找列表的长度以及如何在使用列表时避免索引错误。

在第 4 章中,您将学习如何更有效地使用列表中的项目。 通过仅使用几行代码遍历列表中的每个项目,您将能够高效地工作,即使您的列表包含数千或数百万个项目。