For循环只处理列表的第一个数字

时间:2014-04-19 21:40:13

标签: python

number3=[30, 32, 34, 36, 50, 52, 54, 90, 300, 302, 303, 304, 305, 306, 320, 322, 323, 324, 325, 340, 342, 343, 360, 500, 502, 503, 504, 505, 520, 522, 523, 540, 900]
for i in (number3):
    m=str(i)
    n=len(m)
    if n == 2:
        number3.remove(i)
    else:
        pass

我不知道为什么,但解释器只处理第一个数字。我希望它遍历整个列表并删除有2位数的数字

1 个答案:

答案 0 :(得分:3)

在迭代列表时,您不应该尝试修改列表。使用list comprehension来执行此操作要容易得多:

number3 = [n for n in number3 if len(str(n)) != 2]