【发布时间】:2015-02-17 20:59:12
【问题描述】:
有两个列表 A 和 B。我想获取 A 中的所有元素,而不是 B 中的所有元素。有什么有效的方法吗?
【问题讨论】:
标签: python list subtraction
有两个列表 A 和 B。我想获取 A 中的所有元素,而不是 B 中的所有元素。有什么有效的方法吗?
【问题讨论】:
标签: python list subtraction
您可以使用列表推导来为您执行此操作。
filtered = [i for i in A if i not in B]
如果列表都很大,您可能需要考虑从B 创建一个set 以加快成员资格查找
setB = set(B)
filtered = [i for i in A if i not in setB]
此解决方案维护A 的顺序以及A 中存在的任何重复项。
【讨论】:
B 转换为set,则为O(N) 时间复杂度。
我总是喜欢为此使用集合:
set(A) - set(B)
编辑:除非 A 有重复项或您关心订单,否则请使用@Cyber 的答案
【讨论】:
【讨论】: