【Python】关于循环列表删除元素时元素没有删除的问题
我想删除字符串列表中的空字符,代码如下:
words = ['hello', 'good', '', '', 'yes', 'ok', '']print(words)
for word in words:
if word == '':
words.remove(word)
print(words)
逻辑没有问题,但运行效果却不像我想的那样,空字符没有删除干净。
效果如下:
我以为是最后一个空字符删除不了,但在单步调试后发现出错的原因不在于最后一个空字符,而是在第二个空字符。
单步调试截图如下:
到了第一个空字符
删除成功了。
到了第二个空字符时
它没有遍历第二个空字符,直接跳过了。我没明白什么原因,在上网搜索了一番后,才得知python中循环遍历列表时会自动创建一个迭代器,循环是按照下标来遍历的,但删除元素后,迭代器中的下标是没有改变的,然后我们都知道删除元素后,列表向前移了一位。
Q:在这又出现了一个问题,为什么最后打印时空字符不是在中间而在最后呢?
A:关于这个问题,我没有找到答案。有知道的大佬,可以在评论区告诉我。
以上是 【Python】关于循环列表删除元素时元素没有删除的问题 的全部内容, 来源链接: utcz.com/a/75606.html