我想删除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]
答案 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)