我有以下代码:
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
命令测试列表索引是否超出范围。为什么会这样?
答案 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)