我想删除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)
使用列表理解和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)