Solving error: "list index out of range" in Python
Solving error: "list index out of range" in Python
除了我输入 [1,2,3,4,5] 之类的列表时,代码给出了所有测试用例的正确答案。然后显示:
IndexError: list index out of range.
为什么会这样?末尾的 else
语句不应该处理这个问题吗?
def func(n):
my_list = n.split()
l = []
for i in my_list:
l.append(int(i))
if len(l)==0 or len(l)==1:
return None
for k in range(0, len(l)):
if l[k+1] >= l[k] + 2:
return l[k+1]
else:
return None
n = input()
print(func(n))
错误出现在这里:
for k in range(0,len(l)):
if l[k+1]>=l[k]+2:
return l[k+1]
else:
return None
因为您迭代到 k = len(l) - 1
(包括在内),最后一次迭代的 k + 1
将是 len(l)
,这是越界的。相反,您应该将 for
更改为:
for k in range(0, len(l) - 1):
...
现在,最后一次迭代的 k + 1
的值将是 len(l) - 2 + 1 = len(l) - 1
,它在 l
的范围内。
除了我输入 [1,2,3,4,5] 之类的列表时,代码给出了所有测试用例的正确答案。然后显示:
IndexError: list index out of range.
为什么会这样?末尾的 else
语句不应该处理这个问题吗?
def func(n):
my_list = n.split()
l = []
for i in my_list:
l.append(int(i))
if len(l)==0 or len(l)==1:
return None
for k in range(0, len(l)):
if l[k+1] >= l[k] + 2:
return l[k+1]
else:
return None
n = input()
print(func(n))
错误出现在这里:
for k in range(0,len(l)):
if l[k+1]>=l[k]+2:
return l[k+1]
else:
return None
因为您迭代到 k = len(l) - 1
(包括在内),最后一次迭代的 k + 1
将是 len(l)
,这是越界的。相反,您应该将 for
更改为:
for k in range(0, len(l) - 1):
...
现在,最后一次迭代的 k + 1
的值将是 len(l) - 2 + 1 = len(l) - 1
,它在 l
的范围内。