Python 组:差异 () 与 symmetric_difference()

Python sets: difference() vs symmetric_difference()

difference()symmetric_difference()方法在python中有什么区别?



如果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.[=21 的并集=]

>>> A.symmetric_difference(B)
{2, 3, 4, 5}
>>> (A - B).union(B - A)
{2, 3, 4, 5}

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

The symmetric difference of two sets A and B is the set of elements which are in either of the sets A or B but not in both.

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

两个集合(或一组事物)之间的差异并不完全等同于算术差异。

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

现在考虑从蓝色中减去绿色得到的集合应该有什么。它应该有任何蔬菜吗?不。它将有不是绿色的蓝色(或者不是黄色,在相同的逻辑中)。 反之亦然。

因此您可以从一组中获取物品,但不能同时从两者中获取。小编要给小伙伴介绍一下,对称差。给你蓝色和绿色,但不是黄色。

>>> 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。