Python集:difference()vs symmetric_difference()

时间:2018-06-15 07:57:57

标签: python set-difference symmetric-difference

python sets 中的差异() symmetric_difference()方法有什么区别?

3 个答案:

答案 0 :(得分:5)

两组(或一组事物)之间的差异与算术差异并不完全相同。

intersection sets

将上面的两组(蓝色和绿色)视为彼此相交的两组或圆形。黄色部分是交集,属于两个集合。

现在考虑从蓝调减去绿色得到的集合应该有什么。应该有绿色吗?不会。它的蓝色不是绿色(或逻辑上不是黄色)。 反之亦然。

因此,您可以从一组或另一组中获取项目,但不能从两者中获得。我想向您介绍,我的小朋友,对称差异。会给您蓝色和绿色,但不会给黄色。

>>> a = {1,2,3}
>>> b = {1,4,5}
>>> a - b       ## asymmetric difference
{2, 3}
>>> b - a       ## asymmetric difference
{4, 5}
>>> a ^ b       ## symmetric difference
{2, 3, 4, 5}

不对称差异取决于您对ab的处理方式,或者以什么顺序进行比较。以一种获得一件事的方式来看待它,以一种获得另一件事的方式来看待它。根据定义,不对称差异与您以何种方式看待它无关。

注意。这类似于XOR的行为。因此,操作员选择了python语言。如果您给^编号,它也可用作二进制XOR。

答案 1 :(得分:4)

如果设置ab

a - b

a中的所有内容都不在b中。

>>> a = {1,2,3}
>>> b = {1,4,5}
>>> 
>>> a - b
{2, 3}
>>> b - a
{4, 5}

a.symmetric_difference(b)是恰好一组中的所有元素,例如a - bb - a的结合。

>>> a.symmetric_difference(b)
{2, 3, 4, 5}
>>> (a - b).union(b - a)
{2, 3, 4, 5}

答案 2 :(得分:0)

https://www.programiz.com/python-programming/methods/set/symmetric_difference

  

两组A和B的对称差异是一组元素   它们位于A组或B组中,但不在两组中。

然而,差异当然是不言自明的。