为什么while和for循环中的pop()方法,得到的结果却是不一样的

img

因为for内部有一个计数变量,计数变量每次循环加一,直到计数变量大于等于列表长度结束循环。
你在for循环中用pop()减少了列表的长度,但是计数变量没有一起减小,这样循环次数就变少了。
比如你列表中有3个元素,列表的长度是3
计数变量初始为0
第一次循环前先判断计数变量是否大于等于列表长度,0不大于等于3,继续循环。
循环中用pop()减少了列表的长度,变成2
计数变量加一 变成1
第二次循环前先判断计数变量是否大于等于列表长度,1不大于等于2,继续循环。
循环中用pop()减少了列表的长度,变成1
计数变量加一 变成2
第三次循环前先判断计数变量是否大于等于列表长度,2大于等于1了,结束循环,第三次不循环了。

你改成for i in range(len(列表)):
用range(len(列表)) 获取列表的初始长度生成一个长度固定的列表,就可以了。