Python 查找不在两个列表相交处的元素
因此,我知道如何通过以下操作找到两个列表的交集:Python 查找不在两个列表相交处的元素,python,Python,因此,我知道如何通过以下操作找到两个列表的交集: >>> a = [1,2,3,4,5] >>> b = [1,3,5,6] >>> list(set(a) & set(b)) [1, 3, 5] 但是,找到未包含在交点中的所有元素的最佳方法是什么。我最初的想法是创建两个列表的并集,然后从并集的交点中删除所有元素,如下所示: >>> a = [1,2,3,4,5] >>> b = [1,3,5,6
>>> a = [1,2,3,4,5]
>>> b = [1,3,5,6]
>>> list(set(a) & set(b))
[1, 3, 5]
但是,找到未包含在交点中的所有元素的最佳方法是什么。我最初的想法是创建两个列表的并集,然后从并集的交点中删除所有元素,如下所示:
>>> a = [1,2,3,4,5]
>>> b = [1,3,5,6]
>>> intersection = list(set(a) & set(b))
>>> union = list(set(a) | set(b))
>>> non_intersection = intersection - union
[2, 4, 6]
这是最好的方法还是有其他方法?对称差异
>>> set(a).symmetric_difference(b)
{2, 4, 6}
我通常喜欢捷径:
set(a) ^ set(b)
{2, 4, 6}
你要找的是对称差分。集合有一个方法。尝试谷歌搜索。要补充BrenBarn所说的内容,请使用
^
而不是&
。文档中介绍了这一点。它位于“pythonset方法”下。你怎么没有在搜索中找到它?symmetric\u difference
接受任何iterable,因此不需要第二次调用set
.ty!这是选择该方法而非快捷方式的另一个原因。出于兴趣,“^”的想法是什么?