python list方法之后不能for循环_[PYTHON] for循环中关于列表list中remove method 不得不说的秘密...

在学习for loop的时候,是否遇到过这样情况,在遍历列表的时候,无论是用remove方法还是通用del 不能删掉想删除的元素?

首先list中remove method 可以直接删除 想删掉的值,例:a=['h','z','j',1,2,3]->a.remove(h)->a.remove(1)->a=['z','j',,2,3]

del 通用方法呢 要使用统一的下标,通过下标来删掉对应的值,例:a=['h','z','j',1,2,3]->del a[0]->del a[4]->a=['z','j',1,3]

但是,我们把他放在for循环里是什么样呢?

本来我们想要的是,删除列表中每一个元素,但是为什么列表还会剩两个值?

因为具体过程如下:

1、当第一次删除后,后面的元素会前移,此时a=[2,3,4,5]#第一个元素可以正常删除

2、然后指针下一次会指向新列表的第二个元素(即初始状态的第三个位置),从而初始状态的第二个位置被跳过了,初始第三个位置被删除,接着后面的元素又再次前移(变成[2,4,5])

#指针对应的下标为2 ,因为发生位移,第二次遍历的时候i的值直接指向第二位,也是3

3、指针指向新列表的第三个元素,即初始状态的第5个元素5,然后5被删除了,因此只剩下[2,4]

#第一次:a=[1,2,3,4,5]->a=1 第二次:a=[2,3,4,5]->指针发生变法i=3 同理第三次i=5

如果数据量不是特别大的时候,可以尝试复制一份对应的数据,遍历旧数据的时候,删除新数据里的值,这样就实现了

这样就实现了删除列表,或者也可以建立新列表,每次遍历直接添加需要提取的元素

当然你要想删除列表,只需要clear method 就好了。

今天写的是,指针的问题,后面当然没有什么用,道理明白就好。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值