目录
Find elements in one list that are not in the other (Python)
- 在一个列表中查找不在另一个列表中的元素 (Python)
- 使用列表理解查找一个列表中不在另一个列表中的元素
- 使用 for 循环查找一个列表中不在另一个列表中的元素
- 使用 NumPy 在一个列表中查找不在另一个列表中的元素
查找一个列表中不在另一个列表中的元素 (Python)
要在一个列表中查找不在另一个列表中的元素:
- 使用该类
set()
将第一个列表转换为set
对象。 - 使用方法获取 中不在列表中
difference()
的元素。set
- 使用该类
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_2
list_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']
或者,您可以使用
列表理解。
使用列表理解查找一个列表中不在另一个列表中的元素
这是一个三步过程:
- 使用列表理解来遍历列表。
- 检查每个元素是否不包含在另一个列表中并返回结果。
- 新列表将仅包含第一个列表中不在第二个列表中的项目。
主程序
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_2
list_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
列表。
额外资源
您可以通过查看以下教程来了解有关相关主题的更多信息: