具体的场景是这样的:python
我当时第一次是这么写的:函数
这种写法看起来并没什么问题,获得的应该是一个空的列表,其实否则,运行后的结果是这个样子的:测试
咦?究竟是哪里出了问题呢,其实只要去了解一下 for 循环的底层原理,就很容易明白:spa
data 这个列表在内存中是这样存储的:blog
当第一次执行 for 循环时,默认删除索引为1 的元素,即删除 “卖茶叶”,删除后的列表是:索引
当第二次执行 for 循环时,index +1,即删除索引为2 的元素,注意:这时 的 data 已经发生了变化,此时索引为 2 的元素不是“卖面膜” 而是 “卖保险”,删除后的列表是:内存
当第三次执行 for循环时,index 在 2的基础上再加1,即删除索引为3,从上面的列表中咱们能够看到,索引为 3 的元素是“卖手机”,删除后的列表是:for循环
第四次执行for 循环时,index 在3的基础上加1,即删除索引为4的元素,而这时的列表只有两个元素了,没法找到索引为4 的元素,即没法执行删除操做,因此会将列表直接打印出来。基础
此次再运行后的结果是:原理
居然真的删掉了,咱们再来详细看一下它的原理:
data 这个列表在内存中是这样存储的:
第一次执行 for 循环时,因为是倒序因此会默认删除最后一个元素,即“卖手机”,删除后的列表是:
后面会以此类推,直到把整个列表清空。
最后,总结一下,在使用for 循环遍历删除列表中的元素时,必定不要用正序去遍历,用反序遍历才能达到将列表中的元素清空。
最后的最后,再为你们奉上几种其余的方法,也能够达到遍历删除列表中元素的效果哦!
方法一:注意:pop() 函数默认是删除列表的最后一个元素哦
方法二:
哪怕是最没有但愿的事情,只要有一个勇敢者去坚持作,到最后就会拥有但愿。