list列表中去除重复元素时不小心踩的坑

今天闲来没事就上网搜了下python面试题,其中有一题是去除list列表中重复的元素,至少两种方法,我看了下后到,这还不简单,立马就操起编辑器就开干,用了多种方法后,就用到下面这种,一开始我还觉得应该可以,但结果一运行就傻眼了,发现得出来的列表居然为空。


》》》[ ]

看到结果,瞬间就懵逼了,因为前面没用过这个low的方法,但为了凑多种方法,也只好这样写了,我敲代码的思路是这样的:

我在25行中用变量i分别去取lst列表中的元素,第一次for循环后i的值为1,因为i有两个,所以会大于1,然后在27行中删掉,当i取到第二个的时候就会执行else,这时候我定义的空列表就有用了,将这些没有相同元素的唯一元素加入到lst2列表中去,想法是很好的,但结果却不尽人意,然后我就将此代码调试一下,结果发现运行到最后根本就没进过else里面去,而且i值分别为1,2,3,4,5,6,然后我就纳闷了,lst列表中有两个1啊,就算删掉一个后也还有一个啊,为什么只去到一个呢,思索片刻后我就发现问题了,因为我是直接对lst列表进行删除的,lst.remove()后有回到for i in lst 了,这时候的lst已经改变了,变成[1,2,2,3,3,4,4,5,5,6,6]了,但我也想不通,就算刷新了不是应该再从第一个元素取吗?随后我就想通了,因为这还是原来的那个列表,循环一次后i下一次循环则会取到索引会随之递增,这时候i取到的索引就该是为1的元素,而这时候我们的列表已经改变了,索引唯1的值是2了,所以这时候的i的值为2了,终于搞明白了,如果还想用这种方法的话就不要直接对lst进行remove,而是给它深拷贝给另一个新列表,在新列表中进行remove即可。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值