龙空技术网

Python查找两个列表之间的差异

洪较瘦不着调退役it人 74

前言:

而今看官们对“python列表的比较”大体比较关切,同学们都想要了解一些“python列表的比较”的相关知识。那么小编在网上网罗了一些有关“python列表的比较””的相关内容,希望姐妹们能喜欢,你们快快来学习一下吧!

Python查找两个列表之间的差异

4 分钟阅读

两种 Python 方法来查找两个列表之间的差异。其中一种方法是使用 Python Set。它首先将列表转换为集合,然后从中获取唯一部分。

其他非集合方法逐个元素比较两个列表并收集唯一的列表。我们可以通过使用嵌套的 for 循环和列表理解来实现这些。

顺便说一下,如果您不知道 Python 中的集合,请按照以下教程进行操作。它将很快向您介绍Python如何实现Set的数学形式。

查找两个列表之间差异的 pythonic 方法

Python Set 似乎是识别两个列表的共同点和差异的最明显的选择。因此,我们将首先探索它,然后使用嵌套循环和列表理解。

# Test Inputlist_a = [11, 16, 21, 26, 31, 36, 41]list_b = [26, 41, 36]

我们希望我们的解决方案提供以下输出:

# Expected Result# list_out = list_a - list_blist_out = [11, 21, 31, 16]

让我们开始创建一个程序来查找两个列表之间的差异,首先使用集合。

使用 set() 查找两个列表的差异

在这种方法中,我们将首先从 LIST(比如 list1 和 list2)中派生两个 SET(比如 set1 和 set2),方法是将它们传递给 set() 函数。之后,我们将执行设置差分操作。它将从 list1 返回第二个中不存在的那些元素。

这是示例 Python 程序,用于获取两个列表的差异。

def list_diff(list1, list2): 	return (list(set(list1) - set(list2))) # Test Inputlist1 = [11, 16, 21, 26, 31, 36, 41] list2 = [26, 41, 36] # Run Testprint(list_diff(list1, list2)) 

运行此命令后,应会看到以下结果:

[16, 11, 21, 31]
使用嵌套循环

在此方法中,我们将使用嵌套的 For 循环将第一个列表的每个元素与第二个列表进行比较。在遍历时,我们会将每个不匹配的项目附加到一个新的(和空的)列表中。

新列表最终将包括两个给定序列之间的差异。下面是演示此方法的示例程序。

def list_diff(list1, list2):    out = []    for ele in list1:        if not ele in list2:            out.append(ele)    return out# Test Inputlist1 = [11, 16, 21, 26, 31, 36, 41] list2 = [26, 41, 36] # Run Testprint(list_diff(list1, list2)) 

运行上述程序后,您应该看到以下结果:

[11, 16, 21, 31]
使用列表推导

这几乎是我们在上一个中使用的类似技术。在这里,我们将嵌套循环替换为列表理解语法。

请参阅下面的示例。

def list_diff(list1, list2):    out = [item for item in list1 if not item in list2]    return out# Test Inputlist1 = [11, 16, 21, 26, 31, 36, 41] list2 = [26, 41, 36] # Run Testprint(list_diff(list1, list2)) 

运行上述程序后,您应该看到以下结果:

[11, 16, 21, 31]

您现在知道几种方法来检查两个列表的差异了

标签: #python列表的比较 #python列表比较两个列表中的元素 #python列表比较两个列表