如何删除list中的数据,并且处理python的list列表漏删除数据问题

python 的列表:list

列表的删除:del

定义一个列表:

执行后的结果:第一个单词被删除了

那如果想要执行删除这个列表里含有‘go’这个字符串的单词,如何实现呢?

需要结合for循环来实现,代码如下:

执行结果:IndexError: list index out of range

报错原因:在我们删除了words里第一个符合条件的单词:good之后,列表的长度就变了,再按照len(words) 去遍历list,就会越界。

尝试解决的方案一:改变l的长度

执行结果:IndexError: list index out of range

报错原因:在第一次执行for语句的时候,已经生成序列了,在执行循环开始后,不会因为l值的改变,调整序列,所以这种解决方案失败!

尝试解决的方案二:不用for循环,用while循环,随着执行调整条件控制循环次数

 执行结果:没有删除完整,goods没有被删除

原因:删除单词后,list长度变短了,i还执行了+1操作,会跳过一些单词的判断。比如删除good之前,goods占位在words[2],删除good之后,goods占位在words[1],由于此时i =2了,所以goods就被漏掉了。

#尝试解决方案三:调整i的值,在删除执行之后-1,退回到之前的位置

执行结果:['hello', 'apple', 'world', 'digit', 'alpha']

#尝试解决方案四:使用continue,跳过本次循环

执行结果:['hello', 'apple', 'world', 'digit', 'alpha']

总结:在删除list中的值时,需要使用while循环的方式,并且要注意对i的处理,再删除判断后,建议使用continue,跳过本次循环,避免漏删除现象。

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值