如何从Python中的列表中删除元素的所有实例?

时间:2010-02-02 18:42:53

标签: python list

假设我有一个列表a

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

是否有一个删除[1, 1]的所有实例的函数?

8 个答案:

答案 0 :(得分:38)

如果您想要就地修改列表,

a[:] = [x for x in a if x != [1, 1]]

答案 1 :(得分:20)

使用列表理解:

[x for x in a if x != [1, 1]]

答案 2 :(得分:7)

Google找到Delete all items in the list,其中包含

等宝石
from functools import partial
from operator import ne
a = filter(partial(ne, [1, 1]), a)

答案 3 :(得分:6)

def remAll(L, item):
    answer = []
    for i in L:
        if i!=item:
            answer.append(i)
    return answer

答案 4 :(得分:4)

这是Alex Martelli回答的更容易的替代方案:

a = [x for x in a if x != [1,1]]

答案 5 :(得分:3)

new_list = filter(lambda x: x != [1,1], a)

或作为一项功能:

def remove_all(element, list):
    return filter(lambda x: x != element, list)

a = remove([1,1],a)

或者更一般:

def remove_all(elements, list):
    return filter(lambda x: x not in elements, list)

a = remove(([1,1],),a)

答案 6 :(得分:1)

filter([1,1].__ne__,a)

答案 7 :(得分:0)

纯python没有模块版本,或没有列表comp版本(更容易理解?)

>>> x = [1, 1, 1, 1, 1, 1, 2, 3, 2]
>>> for item in xrange(x.count(1)):
...     x.remove(1)
...
>>>
>>> x
[2, 3, 2]

可以很容易地变成def

def removeThis(li,this):
    for item in xrange(li.count(this)):
           li.remove(this)
    return li