Python:从列表中移除多个项目

12 浏览
0 Comments

Python:从列表中移除多个项目

这个问题已经有了答案:

获取两个具有唯一条目的列表之间的差异

我想要从b中移除每个与a中相同的元素,输出应该是[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]

admin 更改状态以发布 2023年5月20日
0
0 Comments

这将从列表'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)

0
0 Comments

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

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

\n为了提高速度,您可以先将a转换为集合,以加快查找速度:\n

a = set(a)

\n编辑:如@Ignacio所指出的那样,这不会在原列表上直接修改,而是创建一个新列表并将其分配给b。如果您必须更改原始列表,则可以将其分配给b[:] (读作:用右侧的元素替换b中的所有元素),而不是b,如下所示:\n

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

0