python:删除列表中的多个项目

时间:2014-09-07 20:34:27

标签: python list

我想删除b中的所有项目,其中的内容为[7,8,9,0],我该怎么做,这似乎不起作用

In [21]:
a=[1,2,3,4,5]
b=[1,2,3,5,5,5,7,8,9,0]
for i in b:
    if i in a:
        print i
        b.remove(i)
print b
Out[21]:
1
3
5
[2, 5, 5, 7, 8, 9, 0]

2 个答案:

答案 0 :(得分:5)

使用列表推导和in运算符。

b = [ elem for elem in b if elem not in a ]

对于速度,您可以先将a更改为一组,以便更快地查找:

a = set(a)

编辑:正如@Ignacio所指出的,这不会修改原始列表,而是创建一个新列表并将其分配给b。如果您必须更改原始列表,则可以指定b[:](读取:将b中的所有元素替换为RHS中的元素),而不是b,例如:

b[:] = [ elem for ... ]

答案 1 :(得分:0)

这将删除已在列表'a'

中的列表'b'中的项目
[b.remove(item) for item in a if item in b]

根据@ shx2更新:

 for item in a:
     while item in b:
         b.remove(item)

此外,您可以通过将列表'a'设置为

来加快速度
 for item in set(a):
     while item in b:
         b.remove(item)