为什么需要-1来索引python列表中的错误索引超出循环的范围
如果我们使用为什么需要-1来索引python列表中的错误索引超出循环的范围,python,python-3.x,for-loop,Python,Python 3.x,For Loop,如果我们使用len(lst)-1 为什么?len(lst)是4,因此您的范围将超过0、1、2和3。当i为3时,lst[i+1]将为lst[4]。4不是lst的有效索引 但是,如果您执行范围(len(lst)-1),您将只运行0、1和2。因此,当i为2时,您将比较数组的最后两个元素,即lst[2]和lst[3]这是因为python列表从0索引到n-1,其中n是列表中存在的元素数 范围(len(lst))将从0循环到len(lst)-1。但是您也在循环中使用lst[i+1],这会使数组在上一次迭代中
len(lst)-1
为什么?len(lst)
是4,因此您的范围将超过0、1、2和3。当i
为3时,lst[i+1]
将为lst[4]
。4不是lst
的有效索引
但是,如果您执行范围(len(lst)-1)
,您将只运行0、1和2。因此,当i
为2时,您将比较数组的最后两个元素,即lst[2]
和lst[3]
这是因为python列表从0
索引到n-1
,其中n
是列表中存在的元素数
范围(len(lst))
将从0循环到len(lst)-1
。但是您也在循环中使用lst[i+1]
,这会使数组在上一次迭代中访问超出范围的索引,从而导致错误。例如,如果您的列表长度为4,那么在最后一次迭代中,i
将为3,并且您正在访问lst[i+1]
,这是lst[4]
,它超出了列表的范围
当您使用range(len(lst)-1)
时,您只是从0迭代到len(lst)-1
,这意味着即使在最后一次迭代中,您也只能访问到lst[len(lst)-1]
,这是最后一次的最后一个索引,并且永远不会访问越界索引。因此,在您的案例中,这是迭代循环的正确方法
假设这是您的列表:
lst = [1,2,3,4]
for i in range(len(lst)):
if lst[i] == lst[i+1]:
print(True)
现在,当您这样做时:
[1, 2, 3, 4]
该范围将为您提供i
的值,如下所示:
for i in range(len(lst))
在此语句中,当i
为3
时,您还尝试访问不存在的索引4
:
0, 1, 2, 3
因此,例外。请以更容易理解的方式重写您的问题。你不能以“错误”开头发帖,请在发帖前给出上下文等。提前谢谢。
0, 1, 2, 3
if lst[i] == lst[i+1]: