为什么即使不执行一些代码也会出现错误?

时间:2019-02-12 17:10:03

标签: python error-handling

我有以下代码:

lista = ["T","E","S","T"]
for i in range (20):
    if i <= len(lista):
        print(lista[i])

Python给我一个错误,说:

IndexError: list index out of range

现在,对我来说这没有意义,因为我正在使用if命令测试列表索引是否超出范围。为什么会这样?

2 个答案:

答案 0 :(得分:1)

列表的len()将高于允许的索引。如果lista = ["T","E","S","T"]-> len(lista)-> 4(列表中有4个项目)。但是,索引为0时,它对应于索引0、1、2和3。...没有“ 4”索引。您可以尝试:

lista = ["T","E","S","T"]
for i in range (20):
    if i <= len(lista) - 1: # account for index error
        print(lista[i])

答案 1 :(得分:0)

问题是您的支票不正确。具有4个元素的列表中的最后一个索引是3,而不是4(请记住,索引从0开始,而不是1)。

将支票更改为:

if i <= len(lista) - 1:

如另一个答案中所述,或更常见的是:

if i < len(lista):

尽管此代码设置为奇数。为什么要创建一个包含20个元素的range,然后忽略最后16个元素?使用列表的长度创建range

for i in range(len(lista)):
    print(lista[i])

或者更好的是,直接在列表上循环:

for elem in lista:
    print(elem)