前言:
而今看官们对“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]
您现在知道几种方法来检查两个列表的差异了