📜  Python|两个或多个列表的并集(1)

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

Python:两个或多个列表的并集

在Python中,有几种操作方法可以将两个或多个列表合并成一个并集。在本文中,我们将介绍一些内置的函数和操作符,可以用于将两个或多个列表合并成一个列表中不包含重复元素的并集。

使用Set进行列表并集操作

Set是Python中的一种数据类型,它是一个无序的且不包含重复元素的集合。我们可以使用Set来合并两个或多个列表的数据,从而过滤掉重复的元素。以下是示例代码:

a = [1, 2, 3]
b = [2, 3, 4]
c = [3, 4, 5]
union = set(a) | set(b) | set(c)
print(list(union))

运行结果如下:

[1, 2, 3, 4, 5]

上述代码中,我们首先将列表a,b,c转换为Set类型,然后通过使用Python的Pipe运算符“|”将它们合并。这个合并操作得到一个Set类型的集合,并将集合转换为列表类型。最终得到不包含重复元素的并集列表。

使用"+"运算符进行列表合并

我们还可以使用“+”运算符将两个或多个列表合并为一个列表。使用加号运算符合并时,重复元素不会自动过滤,它们会被保留在最终的列表中。以下是示例代码:

a = [1, 2, 3]
b = [2, 3, 4]
c = [3, 4, 5]
union = a + b + c
print(list(set(union)))

运行结果如下:

[1, 2, 3, 4, 5]

在上面的代码中,我们首先使用“+”运算符将三个列表合并为一个列表。接下来,我们使用set()函数将这个列表转换为Set类型,并将结果转换回列表类型。这样就得到了不包含重复元素的并集列表。

需要注意的是,“+”运算符在合并两个较大的列表时,可能会耗费较多的时间和内存。而使用Set函数合并时,由于Set类型设置了无重复元素的条件,因此无需进行额外的重复元素处理。

使用itertools.chain.from_iterable函数进行列表合并

我们还可以使用itertools.chain.from_iterable函数将多个列表合并为一个列表。这个函数会先迭代第一个列表,然后依次迭代下一个列表,并将它们合并。最后返回的是合并后的元素序列,而不是列表。如果我们需要把这个序列转换为列表可以使用list()函数。以下是示例代码:

from itertools import chain
a = [1, 2, 3]
b = [2, 3, 4]
c = [3, 4, 5]
union = list(set(chain.from_iterable([a, b, c])))
print(union)

运行结果如下:

[1, 2, 3, 4, 5]

在上面的代码中,我们首先使用chain.from_iterable函数将三个列表合并为一个迭代器对象。然后使用Set函数过滤掉重复的元素。最后将结果转为列表类型。

结论

以上是Python中三种常用的方法合并两个或多个列表为一个列表的并集。在使用时,我们可以根据特定场景的需求来选择最适合的方法。如果需要快速合并较小的列表并且不需要存储重复元素,则使用“+”运算符可能是一个很好的选择。如果在合并较大的列表时则使用Set函数可能效率更高。使用itertools.chain.from_iterable函数可以将任意数量的列表合并为一个有序序列。