列表索引超出范围并带有 while 循环解释

问题描述 投票:0回答:1
A = [1,2,3,4,5]
i = 0
while i < len(A) :
    i += 1
    print(A[i])

输出给了我 2 3 4 5 这是可以理解的,但我不明白我的索引是如何超出范围的,请有人帮助我

我只期望没有“1”的结果,但我不知道为什么它也有索引错误超出范围,我知道我可以通过替换第四行和第五行的顺序来解决这个问题,但我很好奇为什么我的原答案有这样的错误

python
1个回答
0
投票

循环条件

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。)

© www.soinside.com 2019 - 2024. All rights reserved.