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

1 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
Run Code Online (Sandbox Code Playgroud) #
Out[21]:
1
3
5
[2, 5, 5, 7, 8, 9, 0]
Run Code Online (Sandbox Code Playgroud)

shx*_*hx2 5

使用列表理解和in运算符.

b = [ elem for elem in b if elem not in a ]
Run Code Online (Sandbox Code Playgroud)

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

a = set(a)
Run Code Online (Sandbox Code Playgroud)

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

b[:] = [ elem for ... ]
Run Code Online (Sandbox Code Playgroud)