python中for循环控制循环次数

img


for循环控制循环次数,为什么不是选择a。
为什么第二个D删除后就结束循环

img


letter = ['A','B','C','D','D','D']
for i in letter:
    print("当前遍历\t", i,end="\t")
    if i == 'D':
        letter.remove(i)
        print("remove", i , "\tafter\t", letter, end="")
    print("")
print("结果", letter)

由于列表的可变性,在循环中改变了列表,循环到下标3删除了第一D后,列表缩短,循环到4已经是列表最后一项,所以中间的D被跳过了。所以最好不要在循环中改变列表,循环列表的时候最好用li[:]来获得列表的副本

因为for循环在根本上是根据索引的下标来取值的,如letter[0],letter[1],letter[2] ....这样依次取。取值的同时列表的元素个数也在发生变化,无删除操作的时候本可以取到letter[5],现在删除了最后一个值,就最多刚好取的letter[4],且在最后一次循环时将letter[4]删除。然后循环执行结束。