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开始 所有, 如有侵权,请联系我们删除。