好的,我有两个列表,列表 1 和列表 2。我想找到列表 1 和列表 2 中的所有项目,并将它们从列表 1 中删除。我想到的第一种方法这是循环遍历列表 1,然后循环遍历列表 2 以查看它是否在列表 2 中,但在按比例放大时这似乎很慢且效率低下。有更有效的方法吗?
此外,如果有帮助的话,这些列表将按字母顺序排序(它们是字符串)。
我正在使用 python,但我也想从一般编程的角度来看。
list1 = ['bar','foo','hello','hi']
list2 = ['alpha','bar','hello','xam']
list1 会变成 ['foo','hi']
请您参考如下方法:
在 python 中,您可能想要使用集合:
intersection = set(list1).intersection(list2)
这将返回一个 set,它会破坏顺序(除其他外),但您始终可以使用该集来过滤 list1 之后:
list1 = [x for x in list1 if x not in intersection]
如果你真的想使用集合,交集是最有用的。正如评论中指出的那样,如果您根本不想要一套,实际上就没有必要:
set2 = set(list2)
list1 = [x for x in list1 if x not in set2]
