
Python如何给列表取交集
用户关注问题
Python中有哪些方法可以求两个列表的交集?
我有两个列表,想找出它们中共同的元素,Python提供了哪些简便的方法来实现列表交集?
使用set操作或列表推导式求交集
Python中可以通过将列表转换为集合(set)再利用集合的交集操作符(&)或方法(intersection)来求交集,如set(list1) & set(list2)。另外,也可以使用列表推导式,筛选出一个列表中存在于另一个列表的元素,例如[x for x in list1 if x in list2],但这种方法效率较低,适合小数据量。
求列表交集时如何保持元素顺序不变?
我在用Python求两个列表的交集,想让结果中的元素顺序跟原始列表一样,应该怎么做?
用列表推导式结合集合加速判断,保留顺序
为了保持顺序,通常不会直接用集合的交集方法,因为集合是无序的。可以先将一个列表转换成集合,方便快速判断元素是否存在,然后用列表推导式遍历另一个列表,将存在于集合中的元素按原顺序加入最终结果。例如:s = set(list2); result = [x for x in list1 if x in s]。
如何计算多个列表的交集?
如果有三个或以上的列表,怎样用Python一次性找出它们共有的元素?
利用集合的intersection方法传入多个集合
Python的集合对象支持调用intersection方法计算多个集合的交集。可以先将每个列表转换成集合,再使用set1.intersection(set2, set3, ...)或用内置函数set.intersection(*list_of_sets),快速得到所有列表共有的元素。