Skip to main content
 首页 » 编程设计

python之比较两个列表之Python

2025年05月04日9落叶无声

好的,我有两个列表,列表 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]