我有 2 个实例列表:
list1
list2
每个实例都包含id、name等变量...
我正在遍历 list2,我想找到 list1 中不存在的条目。
例如..
for entry in list2:
if entry.id in list1:
<do something>
我希望找到一种无需双重 for 循环即可完成此操作的方法。有没有简单的方法?
请您参考如下方法:
我可能会这样做:
set1 = set((x.id,x.name,...) for x in list1)
difference = [ x for x in list2 if (x.id,x.name,...) not in set1 ]
其中 ... 是实例的附加(可散列)属性——您需要包含足够多的属性以使其独一无二。
这会将您的 O(N*M) 算法转换为 O(max(N,M)) 算法。
