为什么两次循环的结果不同

为什么两次循环的结果不同,我是想用for循环做到while循环一样的效果

img

img

for 循环在这里会出问题,因为你的pet列表在每次remove以后发生变化,for是按照列表的下标来遍历。你第一次remove以后把列表中的第一个dog删除了,此时pet=[dog,cat],但是下一次循环for指向了列表的第二个元素,此时是cat,所以没有把第二个dog删除

for循环是去循环你的列表pet,每次循环去取pet中的一个元素。
正常的是:第一次,取列表中的第一个元素dog;第二次,取列表中的第二个元素dog;第三次,取列表中的第三个元素cat
而你在循环中删除了pet的元素。第一次,dog,满足条件,删除。pet只有两个元素,而现在去取的是列表中的第二个元素,现在的第二个元素是cat,以前的第二个元素dog现在变成第一个元素了。对于for循环来说,它是依次去取元素。

而while循环判断条件是dog存在pet列表中,他就满足条件,执行循环。
第一次,删除一个dog,判断是否还要dog在列表中,存在,在执行一次循环

稍微改了下代码就可以了

img

img