为什么for循环跳过for循环中列表后的第一个元素?

时间:2016-12-29 00:47:28

标签: python python-3.x

我打算最后删除'0'或仅'0'的元素,我的代码是:

s = ['a0', 'b0', '0', 'c', 'd']
for x in s:
    if x[-1] == '0' or x == '0':
        s.remove(x)

s #result
['b0', 'c', 'd']

当我调试时,我发现在删除“a0”后,s变为['b0', '0', 'c', 'd'],然后我认为x将是'b0',但事实证明是'0',所以它跳过'b0',我想知道背后的原因以及如何解决它?

1 个答案:

答案 0 :(得分:4)

在迭代列表时不要修改列表(more information here)。

相反,请尝试一次过滤所有列表:

s = [x for x in s if x[-1] != '0']