您在
l遍历列表时减少了列表的长度,因此当您接近range语句中索引的末尾时,其中一些索引不再有效。
它 看起来 像你想要做的是:
l = [x for x in l if x != 0]
它将返回
l没有任何零元素的副本(顺便说一下,该操作称为列表理解)。您甚至可以将最后一部分缩短为正义
if x,因为非零数字的计算结果为
True。
i < len(l)用编写代码的方式,没有像这样的循环终止条件,因为它
len(l)是在循环之前 预先 计算的,不会在每次迭代时重新评估。您
可以 用以下方式编写它:
i = 0while i < len(l): if l[i] == 0: l.pop(i) else: i += 1



