我试着比较2个不同的列表,并找出它们之间的差异。例如,我有
在我的实际代码中,我比较了由数千行组成的html,所以我更喜欢尽可能快的内容,但任何内容都值得赞赏:)
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]