python sets 中的差异()和 symmetric_difference()方法有什么区别?
答案 0 :(得分:5)
两组(或一组事物)之间的差异与算术差异并不完全相同。
将上面的两组(蓝色和绿色)视为彼此相交的两组或圆形。黄色部分是交集,属于两个集合。
现在考虑从蓝调减去绿色得到的集合应该有什么。应该有绿色吗?不会。它的蓝色不是绿色(或逻辑上不是黄色)。 反之亦然。
因此,您可以从一组或另一组中获取项目,但不能从两者中获得。我想向您介绍,我的小朋友,对称差异。会给您蓝色和绿色,但不会给黄色。
>>> 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}
不对称差异取决于您对a
和b
的处理方式,或者以什么顺序进行比较。以一种获得一件事的方式来看待它,以一种获得另一件事的方式来看待它。根据定义,不对称差异与您以何种方式看待它无关。
注意。这类似于XOR的行为。因此,操作员选择了python语言。如果您给^
编号,它也可用作二进制XOR。
答案 1 :(得分:4)
如果设置a
和b
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 - b
和b - 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组中,但不在两组中。
然而,差异当然是不言自明的。