对称_差异输出为两个单独的列表

时间:2018-11-14 23:31:39

标签: arrays python-3.x list symmetric-difference

比方说,我们有两个值列表,每个列表仅包含唯一的值。单个列表中永远不会有重复的值。

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']

或者有一种方法可以获取两个单独的列表作为输出,而仅将两个集合/列表彼此进行一次比较?

1 个答案:

答案 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))

希望这会有所帮助。