在一个列表中查找不在另一个列表中的元素(Python)

目录

Find elements in one list that are not in the other (Python)

  1. 在一个列表中查找不在另一个列表中的元素 (Python)
  2. 使用列表理解查找一个列表中不在另一个列表中的元素
  3. 使用 for 循环查找一个列表中不在另一个列表中的元素
  4. 使用 NumPy 在一个列表中查找不在另一个列表中的元素

查找一个列表中不在另一个列表中的元素 (Python)

要在一个列表中查找不在另一个列表中的元素:

  1. 使用该类set()将第一个列表转换为set对象。
  2. 使用方法获取 中不在列表中difference()的元素。set
  3. 使用该类list()set对象转换为列表。
主程序
list_1 = ['a', 'b', 'c'] list_2 = ['a', 'd', 'e'] result_1 = list(set(list_2).difference(list_1)) print(result_1) # 👉️ ['e', 'd'] # -------------------------------------- result_2 = list(set(list_1).difference(list_2)) print(result_2) # 👉️ ['b', 'c']

第一步是使用
set()类将列表转换为set对象。

Set 对象有一个
difference()
方法,它返回一个新的
set,其中的元素set不在提供的可迭代对象中。

换句话说,set(list_2).difference(list_1)返回一个新的,其中包含不在 中的set项目list_2list_1

主程序
list_1 = ['a', 'b', 'c'] list_2 = ['a', 'd', 'e'] # 👇️ {'d', 'e'} print(set(list_2).difference(list_1))

最后一步是使用该类list()将结果转换为list.

主程序
list_1 = ['a', 'b', 'c'] list_2 = ['a', 'd', 'e'] result_1 = list(set(list_2).difference(list_1)) print(result_1) # 👉️ ['d', 'e']

或者,您可以使用
列表理解

使用列表理解查找一个列表中不在另一个列表中的元素

这是一个三步过程:

  1. 使用列表理解来遍历列表。
  2. 检查每个元素是否不包含在另一个列表中并返回结果。
  3. 新列表将仅包含第一个列表中不在第二个列表中的项目。
主程序
list_1 = ['a', 'b', 'c'] list_2 = ['a', 'd', 'e'] result_1 = [item for item in list_2 if item not in list_1] print(result_1) # 👉️ ['d', 'e'] # -------------------------------------- result_2 = [item for item in list_1 if item not in list_2] print(result_2) # 👉️ ['b', 'c']

我们使用列表理解来迭代其中一个列表。

列表推导用于对每个元素执行一些操作,或者选择满足条件的元素子集。

在每次迭代中,我们检查该项目是否不包含在另一个列表中并返回结果。

新列表包含第一个列表中不在第二个列表中的所有元素。

换句话说,返回不在 中[item for item in list_2 if item not in list_1]的所有元素list_2list_1

for使用循环查找一个列表中不在另一个列表中的元素

您还可以使用for 循环来查找一个列表中不在另一个列表中的元素。

主程序
list_1 = ['a', 'b', 'c'] list_2 = ['a', 'd', 'e'] new_list = [] for item in list_2: if item not in list_1: new_list.append(item) print(new_list) # 👉️ ['d', 'e']

我们使用for循环遍历第二个列表。

在每次迭代中,我们检查当前项目是否不包含在第一个列表中。

如果满足条件,我们将该项目附加到新列表中。

新列表仅包含第二个列表中未包含在第一个列表中的项目。

使用 NumPy 查找一个列表中不在另一个列表中的元素

您还可以使用 NumPy 模块查找一个列表中不在另一个列表中的元素。

主程序
import numpy as np list_1 = ['a', 'b', 'c'] list_2 = ['a', 'd', 'e'] result_1 = np.setdiff1d(list_2, list_1) print(result_1) # 👉️ ['d' 'e'] result_2 = np.setdiff1d(list_1, list_2) print(result_2) # 👉️ ['b' 'c']

确保安装 NumPy以便能够导入和使用该模块。

pip install numpy pip3 install numpy

numpy.setdiff1d方法

找到两个数组之间的集合差异。

该方法返回第一个数组中不包含在第二个数组中的唯一值。

如果需要将结果数组转换为本机 Python 列表,请使用该
tolist()方法。

主程序
import numpy as np list_1 = ['a', 'b', 'c'] list_2 = ['a', 'd', 'e'] result_1 = np.setdiff1d(list_2, list_1).tolist() print(result_1) # 👉️ ['d', 'e'] print(type(result_1)) # 👉️ <class 'list'>

tolist

方法将数组转换
numpy列表。

额外资源

您可以通过查看以下教程来了解有关相关主题的更多信息: