比方说,我们有两个值列表,每个列表仅包含唯一的值。单个列表中永远不会有重复的值。
L1 | L2
-------
a | a
b | d
c | e
d | g
e | h
f | i
| j
我们可以使用set(L1).symmetric_difference(L2)
得到这些列表的差异,但是不幸的是,将结果汇总到一个列表中。例如,list(set(L1).symmetric_difference(L2))
的输出为['c', 'b', 'h', 'i', 'j', 'f', 'g']
。
是否可以从list(set(L1).symmetric_difference(L2))
获得两个单独的输出列表,例如['c', 'b', 'f',]
和['h', 'i', 'j', 'g']
?
或者有一种方法可以获取两个单独的列表作为输出,而仅将两个集合/列表彼此进行一次比较?
答案 0 :(得分:1)
您可以简单地执行以下操作:
dif_1_from_2 = list(set(L1) - set(L2))
dif_2_from_1 = list(set(L2) - set(L1))
您可以创建一个函数来做到这一点:
def get_symmetric_difference(L1, L2):
return list(set(L1)-set(L2)), list(set(L2)-set(L1))
然后您这样称呼它:
print(get_symmetric_difference(L1, L2))
希望这会有所帮助。