📜  Python|合并列表的重叠部分(1)

📅  最后修改于: 2023-12-03 15:04:24.966000             🧑  作者: Mango

合并列表的重叠部分

在Python中,有时我们需要将多个列表中的重叠部分合并成一个列表。下面我们来介绍一下如何实现这一功能。

方法一:使用set和&操作符
list1 = [1, 2, 3, 4, 5]
list2 = [4, 5, 6, 7, 8]
list3 = [5, 6, 7, 8, 9]

result = list(set(list1) & set(list2) & set(list3))
print(result)  # 输出:[5]

使用set函数将列表转换成集合,然后使用&操作符求出集合的交集。最后将交集转换回列表即可得到重叠部分。

这种方法的优点是简单明了,缺点是当列表中的元素是可变对象时,不能正常工作。

方法二:使用列表解析
list1 = [1, 2, 3, 4, 5]
list2 = [4, 5, 6, 7, 8]
list3 = [5, 6, 7, 8, 9]

result = [x for x in list1 if x in list2 and x in list3]
print(result)  # 输出:[5]

使用列表解析,遍历list1中的元素,如果同时存在于list2和list3中,则加入到结果列表中。

这种方法的优点是适用于任何元素类型的列表,缺点是效率相对较低。

方法三:使用reduce函数和intersection方法
from functools import reduce

list1 = [1, 2, 3, 4, 5]
list2 = [4, 5, 6, 7, 8]
list3 = [5, 6, 7, 8, 9]

result = reduce(set.intersection, [set(x) for x in [list1, list2, list3]])
print(list(result))  # 输出:[5]

使用reduce函数和intersection方法,将列表转化为集合后求交集。reduce函数将集合列表中的集合依次取交集,最终得到唯一的交集集合。

这种方法的优点是效率相对较高,缺点是语法比较复杂。

以上三种方法均可以实现合并列表的重叠部分,选择合适的方法取决于需求和具体情况。