当前位置: 首页 > 后端技术 > Python

关于循环列表删除元素时没有删除元素的问题

时间:2023-03-25 23:23:32 Python

我想删除字符串列表中的空字符,代码如下:words=['hello','good','','','yes','ok','']print(words)forwordinwords:ifword=='':words.remove(word)print(words)逻辑没有问题,但是运行效果不是我想象的那样,空字符没有删除干净。效果如下:本来以为最后一个空字符删不掉,但是经过一步一步的调试,发现错误的原因不是最后一个空字符,而是第二个空字符。单步调试截图如下:到了第一个空字符,删除成功。当它到达第二个空字符时,它会跳过它而不遍历第二个空字符。我不明白原因。上网查了下才知道在python中循环list的时候会自动创建一个iterator。循环是按照下标遍历的,但是删除元素后,iterator中的下标并没有改变,然后我们都知道删除一个元素后,列表向前移动一位。Q:这里还有一个问题,为什么最后打印时空格字符不在中间而是在末尾?答:我还没有找到这个问题的答案。如果有人知道,请在评论区告诉我。