Python 集:difference() 与 symmetric_difference()

新手上路,请多包涵

python 集合 中的 difference() 和 _symmetricdifference() 方法有什么区别?

原文由 Anya Samadi 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 872
2 个回答

对称差异

如果 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}

原文由 timgeb 发布,翻译遵循 CC BY-SA 4.0 许可协议

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

交集

将上面的两组(蓝色和绿色)视为彼此相交的两组或圆圈。黄色是交叉点,属于两组。

现在考虑从蓝色中减去绿色的集合结果应该是什么。它应该有任何蔬菜吗?不,因为它们被减去。它应该有任何黄色吗?不,因为黄色也是绿色。

那么从绿色中减去蓝色呢?当然,情况恰恰相反。

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

 >>> 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 语言中选择了运算符。 ^ 如果你给它数字,它也被用作二进制异或。

原文由 Pedro Rodrigues 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏