假设我有一个列表a
:
a = [[1, 1], [2, 2], [1, 1], [3, 3], [1, 1]]
是否有一个删除[1, 1]
的所有实例的函数?
答案 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