有时我们需要找出两个列表之间的差异。这还将意味着数学减法,其中如果第二列表中存在元素,则将其从第一列表中删除。重复项将保留。以下是我们可以实现此目标的方法。
我们可以使用collections模块中的Counter方法,该方法将跟踪元素的计数。直接的数学减法即可得到所需的结果。在最终结果中,元素在第一列表和第二列表之间的出现次数将决定元素。
from collections import Counter #初始化列表 listA = ['Mon', 'Tue', 9, 3, 3] listB = ['Mon', 3] #打印原始列表 print("Given ListA : ",listA) print("Given ListB : ",listB) # 应用collections.Counter() diff_list = list((Counter(listA) - Counter(listB)).elements()) # 结果 print("Result of list subtraction : ",diff_list)
输出结果
运行上面的代码给我们以下结果-
Given ListA : ['Mon', 'Tue', 9, 3, 3] Given ListB : ['Mon', 3] Result of list subtraction : ['Tue', 9, 3]
问题内容: a = [1,1,1,2,3,4,4] >>> b = [1,1,2,3,3,3,4] 请注意,这不是一个相同的问题: 两个列表的Python交集保持重复 因为即使列表a中有三个1,列表b中也只有两个,所以结果应该只有两个。 问题答案: 您可以使用此方法,当您使用交叉路口时,它将为每个元素提供在任一列表中找到的最低计数。 输出 :
问题内容: 我有两个列表,其中包含许多相同的项目,包括重复的项目。我想检查第一个列表中的哪些项不在第二个列表中。例如,我可能有一个这样的列表: 还有一个像这样的列表: 比较这两个列表,我想返回第三个列表,如下所示: 我目前正在使用一些我之前确定的糟糕代码,我可以肯定它甚至无法正常工作,如下所示。 我怎样才能更好地完成这项任务? 问题答案: 您没有指定订单是否重要。如果没有,则可以在> = Pyth
问题内容: 我有两个平面列表,其中一个包含重复值。例如, 我需要在array1中也找到array2中的值,并保留array1中的重复项。预期的结果将是 我想避免循环,因为实际数组将包含数百万个值。我尝试了各种布景和相交组合,但无法保留重复项。 任何帮助将不胜感激! 问题答案: 您是什么意思不想使用循环?您将不得不以一种或另一种方式对其进行迭代。只需单独放入每个项目,然后检查是否随身携带: 此外,根
我想把两个列表合并成一个列表列表。反之亦然。我找不到任何工作,我对Python非常陌生 例子: 如何将S拆分回原来的S1和S2?示例:
我有一个<代码>列表 Java8似乎提供了一种通过流来实现的方法。更基本的方法呢? 谢谢
问题内容: 我有两个列表需要合并,第二个列表忽略了第一个列表的重复项。..有点难以解释,所以让我展示一个代码看起来像什么,以及我想要什么的示例。 您会注意到结果具有第一个列表, 包括 其两个“ 2”值,但是second_list也具有附加的2和5值这一事实并未添加到第一个列表中。 通常,对于这样的事情,我会使用集合,但是first_list上的集合会清除它已经具有的重复值。所以我只是想知道什么是实