列表的对称差集

返回两个可迭代对象的对称差集,不过滤重复值。

  • 从每个列表创建一个set
  • 对每个列表使用列表推导式,只保留不包含在另一个列表的先前创建的集合中的值。
def symmetric_difference(a, b):
  (_a, _b) = (set(a), set(b))
  return [item for item in a if item not in _b] + [item for item in b
          if item not in _a]

symmetric_difference([1, 2, 3], [1, 2, 4]) # [3, 4]