有两个列表A和B.我想获得A中的所有元素但不是B中的所有元素。任何有效的方法都可以这样做吗?
答案 0 :(得分:8)
您可以使用列表推导为您执行此操作。
filtered = [i for i in A if i not in B]
如果列表都很大,您可能需要考虑从set
创建B
以便更快地进行成员资格查找
setB = set(B)
filtered = [i for i in A if i not in setB]
此解决方案维护A
的顺序以及A
中存在的任何重复项。
答案 1 :(得分:4)
我总是喜欢使用套装:
set(A) - set(B)
编辑:除非A有重复或您关心订单,否则请使用@ Cyber的答案
答案 2 :(得分:-2)