从Python列表中删除某些值的每一个出现?

时间:2011-04-11 06:28:29

标签: python list

这是我的代码:

a = [1,2,3,43,43,43]

count = a.count(43)
if count > 0:
    for i in range(count):
        a.remove(43)

print a

有没有更简单的方法来实现这个目标?

4 个答案:

答案 0 :(得分:8)

尝试

a = [x for x in a if x != 43] 

答案 1 :(得分:3)

尝试itertools

>>> import itertools
>>> a = [1, 2, 3, 43, 43, 45]
>>> iter = itertools.ifilter(lambda x: x != 43, a)
>>> list(iter)
[1, 2, 3]

答案 2 :(得分:3)

请注意,上面的所有解决方案(除了使用remove的解决方案,但是具有非线性执行时间的解决方案)将创建一个新列表,而不是修改原始列表。在您的情况下,这可能是也可能不是问题。如果要修改原始列表,则必须使用切片分配,例如:

a[:] = [value for value in a if value != 43] 

答案 3 :(得分:1)

您想要删除列表a中的所有43个吗?

a = [x for x in a if x != 43]