这是我的代码:
a = [1,2,3,43,43,43]
count = a.count(43)
if count > 0:
for i in range(count):
a.remove(43)
print a
有没有更简单的方法来实现这个目标?
答案 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]