A = [1,2,3,4,5]
i = 0
while i < len(A) :
i += 1
print(A[i])
输出给了我 2 3 4 5 这是可以理解的,但我不明白我的索引是如何超出范围的,请有人帮助我
我只期望没有“1”的结果,但我不知道为什么它也有索引错误超出范围,我知道我可以通过替换第四行和第五行的顺序来解决这个问题,但我很好奇为什么我的原答案有这样的错误
循环条件
while i < len(A)
保证在循环开始时,你总是有i < len(A)
(否则你就会退出循环)。
但是,在循环的第一行,您将
1
添加到 i
。所以现在 i
可能等于 len(A)
…
这正是循环的最后(第 4 次)迭代时发生的情况:在开始时,
i=4
确实验证了条件 i < len(A)
,因为 len(A)
是 5。但是随后将 1
添加到 i
。所以 i = 5
,这是越界的(记住:列表索引从 0 开始,所以有效索引是 0、1、2、3 和 4。)