Python 基础教程

Python 高级教程

Python 相关应用

Python 笔记

Python FAQ

python列表并集


在 Python 中,可以使用多种方式来计算两个列表的并集。以下是一些常见的方法,每种方法都将详细介绍其步骤流程、示例代码以及优缺点,最后会进行总结比较。

方法一:使用循环

这是一种最基本的方法,通过循环遍历两个列表,将不重复的元素添加到新的列表中。

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

union_list = []
for item in list1:
    if item not in union_list:
        union_list.append(item)
for item in list2:
    if item not in union_list:
        union_list.append(item)

print(union_list)

方法二:使用集合(set)

集合是一种不允许重复元素的数据结构,可以使用集合来计算并集。

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

set1 = set(list1)
set2 = set(list2)

union_set = set1.union(set2)

union_list = list(union_set)

print(union_list)

方法三:使用“+”运算符

可以使用"+"运算符来合并两个列表,并且使用集合(set)去重。

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

union_list = list(set(list1 + list2))

print(union_list)

方法四:使用 itertools.chain

itertools.chain 是 Python 标准库中的一个工具,可以用于合并多个可迭代对象。

import itertools

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

union_list = list(itertools.chain(list1, list2))

print(union_list)

方法五:使用 NumPy

如果需要处理大型数组,可以使用 NumPy 库来计算并集。

首先,确保你已经安装了 NumPy 库:

pip install numpy

然后使用以下代码:

import numpy as np

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

arr1 = np.array(list1)
arr2 = np.array(list2)

union_arr = np.union1d(arr1, arr2)

union_list = union_arr.tolist()

print(union_list)

方法比较

  1. 循环方式是最基本的方法,但在处理大型数据时效率较低。
  2. 集合方式是一种简单且高效的方法,但可能会改变元素的顺序。
  3. "+"运算符方法也是简单且高效的,但可能会改变元素的顺序。
  4. itertools.chain 方法适用于合并多个可迭代对象,但与集合方式相比,稍显繁琐。
  5. NumPy 方式适用于处理大型数组,但需要额外安装 NumPy 库。

选择哪种方法取决于你的需求和性能要求。如果只需简单地计算并集,并且不需要保持元素的原始顺序,使用集合或"+"运算符方法是不错的选择。如果需要更高级的功能或处理大型数据集,考虑使用 NumPy 或 itertools.chain 方法。