📅  最后修改于: 2023-12-03 15:04:24.966000             🧑  作者: Mango
在Python中,有时我们需要将多个列表中的重叠部分合并成一个列表。下面我们来介绍一下如何实现这一功能。
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中,则加入到结果列表中。
这种方法的优点是适用于任何元素类型的列表,缺点是效率相对较低。
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函数将集合列表中的集合依次取交集,最终得到唯一的交集集合。
这种方法的优点是效率相对较高,缺点是语法比较复杂。
以上三种方法均可以实现合并列表的重叠部分,选择合适的方法取决于需求和具体情况。