提问者:小点点

比较2个列表并打印差异


我试着比较2个不同的列表,并找出它们之间的差异。例如,我有,它由组成,列表2由组成。我将如何比较这两个变量,然后为差异赋值一个变量,在本例中为。然而,顺序并不重要,如果存在一个以上的差异,则应将这些差异中的每一个分配给单个变量。

在我的实际代码中,我比较了由数千行组成的html,所以我更喜欢尽可能快的内容,但任何内容都值得赞赏:)


共3个答案

匿名用户

str1 = 'cat,dog,whale,hamster'
str2 = 'dog,whale,hamster'

将字符串更改为python集:

set1 = set(str1.split(','))
set2 = set(str2.split(','))

了解不同之处:

result = set1 - set2

打印:

{'cat'}

您可以将其转换为列表或字符串:

result_as_list = list(result)
result_as_string = ','.join(result)

匿名用户

如果您的列表可能包含重复项,或者您需要知道仅在两个列表之一中的元素,则可以使用Counter(来自collections模块):

list1 = ['cat','dog','whale','hamster','dog']
list2 = ['dog','whale','hamster','cow','horse']

from collections import Counter

c1,c2 = Counter(list1),Counter(list2)
differences = [*((c1-c2)+(c2-c1)).elements()]

print(differences) # ['cat', 'dog', 'cow', 'horse']

匿名用户

这就是你要做的。这里定义的函数将打印两个列表之间的差异

def Diff(list1, list2):
    li_dif = [i for i in list1 + list2 if i not in list1 or i not in list2]
    return li_dif
 
# Driver Code
list1 = ['cat','dog','whale','hamster']
list2 = ['dog','whale','hamster']
diff = Diff(list1, list2)
print(diff)

输出:

['cat']

这里由变量生成

现在如果有一个以上的差异,如下所示:

def Diff(list1, list2):
    li_dif = [i for i in list1 + list2 if i not in list1 or i not in list2]
    return li_dif
 
# Driver Code
list1 = ['cat','dog','whale','hamster','ostrich','yak','sheep','lion','tiger']
list2 = ['dog','whale','hamster']
diff = Diff(list1, list2)
print(diff)

输出将是:

['cat','ostrich','yak','sheep','lion','tiger']

您的问题是,如果存在不止一个差异,那么这些差异中的每一个都应该分配给单个变量。为此,我们将把打印的项视为一个列表,我们将其命名为

此处,

这里,只有6个列表项,我们可以为它们每一个分配一个变量,如下所示:

    v1=list3[0]
    v2=list3[1]
    v3=list3[2]
    v4=list3[3]
    v5=list3[4]
    v6=list3[5]