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

我想删除字符串列表中的空字符,代码如下:

words = ['hello', 'good', '', '', 'yes', 'ok', '']

print(words)

for word in words:

if word == '':

words.remove(word)

print(words)

逻辑没有问题,但运行效果却不像我想的那样,空字符没有删除干净。
效果如下:【Python】关于循环列表删除元素时元素没有删除的问题
我以为是最后一个空字符删除不了,但在单步调试后发现出错的原因不在于最后一个空字符,而是在第二个空字符。
单步调试截图如下:
到了第一个空字符【Python】关于循环列表删除元素时元素没有删除的问题
【Python】关于循环列表删除元素时元素没有删除的问题删除成功了。

到了第二个空字符时【Python】关于循环列表删除元素时元素没有删除的问题
它没有遍历第二个空字符,直接跳过了。我没明白什么原因,在上网搜索了一番后,才得知python中循环遍历列表时会自动创建一个迭代器,循环是按照下标来遍历的,但删除元素后,迭代器中的下标是没有改变的,然后我们都知道删除元素后,列表向前移了一位。

Q:在这又出现了一个问题,为什么最后打印时空字符不是在中间而在最后呢?
A:关于这个问题,我没有找到答案。有知道的大佬,可以在评论区告诉我。

以上是 【Python】关于循环列表删除元素时元素没有删除的问题 的全部内容, 来源链接: utcz.com/a/75606.html

回到顶部