python集合中的difference()方法和symmetric_difference()方法有什么区别?
python集合中的difference()方法和symmetric_difference()方法有什么区别?
^
、-
、|
和 &
分别提供对称差、差集、并集和交集操作。因此,在所提供的操作中,以下是正确的:a.symmetric_difference(b) == a ^ b
和 (a - b).union(b - a) == a - b | b - a
。 - Pedro Rodrigues现在考虑以下内容。
从蓝色中减去绿色所得到的结果集应该有什么?它应该有任何绿色吗?不应该,因为我们想要减去绿色。应该有任何黄色吗?不应该,因为黄色是绿色。
相反呢?从绿色中减去蓝色。它不应该有蓝色和黄色,因为黄色是蓝色。
因此,我们可以从一组或另一组中获取物品,但不能获取不同之处的物品。这就是对称差异的含义所在。
考虑下面的例子。
>>> a = {1,2,3}
>>> b = {1,4,5}
>>> a - b ## asymmetric difference
{2, 3} ## nothing from b here
>>> b - a ## asymmetric difference
{4, 5} ## nothing from a here
>>> a ^ b ## symmetric difference
{2, 3, 4, 5} ## from a and b but not from both
根据 https://www.programiz.com/python-programming/methods/set/symmetric_difference:
两个集合 A 和 B 的对称差是指那些既属于集合 A 又属于集合 B 的元素组成的集合。
然而,差集的含义是不言自明的。
a
和b
,(a - b) | (b - a) == a ^ b
。通过包含两个差异来实现对称性。 - Yann Vernier