在 Python 中获取两个列表之间的差异

Lakshay Kapoor 2023年1月30日 2021年7月9日
  1. 在 Python 中使用 set.difference() 查找两个列表之间的差异
  2. 在 Python 中使用 set.symmetric_difference() 查找两个列表之间的差异
  3. 在 Python 中使用关键字 in 查找两个列表之间的差异
  4. 在 Python 中使用 NumPy 库查找两个列表之间的差异
在 Python 中获取两个列表之间的差异

有许多对数据结构执行的操作,如列表、字典、元组和数组。在 Python 中,这些数据结构几乎用在每个程序中。这些数据结构之一是 Python 中的列表。Python 编程中的列表有助于在一个变量中存储多个项目。找出两个列表之间的差异是几乎每个程序员都会执行的一项非常常见的任务。

本教程将演示几种在 Python 中获取两个列表之间差异的方法。

在 Python 中使用 set.difference() 查找两个列表之间的差异

set() 方法帮助用户将任何可迭代对象转换为可迭代序列,也称为集合。可迭代对象可以是列表、字典或元组。

set.difference() 函数用于返回两个集合之间的差异。这个功能基本上消除了两组中的共同元素。

list_1 = [5, 10, 15, 20, 25, 30]
list_2 = [10, 20, 30, 40, 50, 60]

difference_1 = set(list_1).difference(set(list_2))
difference_2 = set(list_2).difference(set(list_1))

list_difference = list(difference_1.union(difference_2))
print(list_difference)

输出:

[50, 5, 40, 25, 60, 15]

对于这种方法,第一步是将两个列表存储在两个变量中。set() 函数用于将这些列表转换为集合。在同一步骤中,set.difference() 函数用于查找两个集合之间的差异。请注意,difference_1 变量获取 list_1 中的元素,而不是 list_2 中的元素。

difference_2 变量获取在 list_2 中而不是在 list_1 中的元素。之后,union 函数用于从 difference_1difference_2 变量中获取所有元素。此外,list() 函数用于再次将两个集合转换为列表。最后,打印结果列表。

在 Python 中使用 set.symmetric_difference() 查找两个列表之间的差异

在这里,set() 方法最初用于将两个列表转换为集合。

symmetric_difference() 方法用于返回第一组或第二组中的元素。此方法不会像两个集合的公共元素一样返回交集。

list_1 = [5, 10, 15, 20, 25, 30]
list_2 = [10, 20, 30, 40, 50, 60]

set_difference = set(list_1).symmetric_difference(set(list_2))
list_difference = list(set_difference)

print(list_difference)

输出:

[5, 40, 15, 50, 25, 60]

set() 方法也用于将列表转换为集合。得到差值后,list() 函数用于获取和转换最终集合,就像将 set_difference 转换回列表一样。

在 Python 中使用关键字 in 查找两个列表之间的差异

in 关键字有助于检查元素是否存在于可迭代序列(如列表)中。

append() 函数也用于此方法。append() 用于向现有列表添加元素;它不会创建新列表,而是通过向其中添加元素来修改初始列表。

list_1 = [5, 10, 15, 20, 25, 30]
list_2 = [10, 20, 30, 40, 50, 60]

list_difference = []
for element in list_1:
    if element not in list_2:
        list_difference.append(element)

print(list_difference)

输出:

[5, 15, 25]

在此方法中,我们首先初始化必须用零元素打印的最终列表。然后我们使用 for 循环从第一个列表开始迭代,即 list_1。之后,我们使用关键字 not in 来检查元素是否在第二个列表中。

最后,我们使用 append() 方法将不在第二个列表中的元素添加到初始列表,即 list_difference。但是,此方法的缺点是它不返回第二个列表中的元素。

为了使这个方法更简单,使用列表推导式。列表推导式是一种帮助使用现有列表的元素创建新列表的方法。

list_1 = [5, 10, 15, 20, 25, 30]
list_2 = [10, 20, 30, 40, 50, 60]

list_difference = [element for element in list_1 if element not in list_2]

print(list_difference)

输出:

[5, 15, 25]

在 Python 中使用 NumPy 库查找两个列表之间的差异

Python 的 NumPy 库是一个非常常用的库。这个库帮助用户在数组、矩阵和线性代数中执行任务。

在此方法中,使用 NumPy 库的三个函数来获取两个列表之间的差异。这三个函数是 np.array()np.setdiff1d()np.concatenate()

数组是 NumPy 库的主要数据结构。np.array() 函数可帮助你创建数组并协助你处理它们。

np.setdiff1d() 函数可帮助你找到两个数组之间的差集,并返回第一个数组中而不是第二个数组中的值。

np.concatenate 函数用于将两个或多个 NumPy 数组组合在一起。参考下面的例子:

import numpy as np
list_1 = [5, 10, 15, 20, 25, 30]
list_2 = [10, 20, 30, 40, 50, 60]

array_1 = np.array(list_1)
array_2 = np.array(list_2)

difference_1 = np.setdiff1d(array_1, array_2)
difference_2 = np.setdiff1d(array_2, array_1)

list_difference = np.concatenate((difference_1, difference_2))
print(list(list_difference))

输出:

[5, 15, 25, 40, 50, 60]
Lakshay Kapoor avatar Lakshay Kapoor avatar

Lakshay Kapoor is a final year B.Tech Computer Science student at Amity University Noida. He is familiar with programming languages and their real-world applications (Python/R/C++). Deeply interested in the area of Data Sciences and Machine Learning.

LinkedIn

相关文章 - Python List