Python如何给列表取交集

Python如何给列表取交集

作者:Joshua Lee发布时间:2026-01-07阅读时长:0 分钟阅读次数:17

用户关注问题

Q
Python中有哪些方法可以求两个列表的交集?

我有两个列表,想找出它们中共同的元素,Python提供了哪些简便的方法来实现列表交集?

A

使用set操作或列表推导式求交集

Python中可以通过将列表转换为集合(set)再利用集合的交集操作符(&)或方法(intersection)来求交集,如set(list1) & set(list2)。另外,也可以使用列表推导式,筛选出一个列表中存在于另一个列表的元素,例如[x for x in list1 if x in list2],但这种方法效率较低,适合小数据量。

Q
求列表交集时如何保持元素顺序不变?

我在用Python求两个列表的交集,想让结果中的元素顺序跟原始列表一样,应该怎么做?

A

用列表推导式结合集合加速判断,保留顺序

为了保持顺序,通常不会直接用集合的交集方法,因为集合是无序的。可以先将一个列表转换成集合,方便快速判断元素是否存在,然后用列表推导式遍历另一个列表,将存在于集合中的元素按原顺序加入最终结果。例如:s = set(list2); result = [x for x in list1 if x in s]

Q
如何计算多个列表的交集?

如果有三个或以上的列表,怎样用Python一次性找出它们共有的元素?

A

利用集合的intersection方法传入多个集合

Python的集合对象支持调用intersection方法计算多个集合的交集。可以先将每个列表转换成集合,再使用set1.intersection(set2, set3, ...)或用内置函数set.intersection(*list_of_sets),快速得到所有列表共有的元素。