【问题标题】:Python sets: difference() vs symmetric_difference()Python 集:difference() 与 symmetric_difference()
【发布时间】:2018-11-25 01:13:15
【问题描述】:

pythonsets中的difference()symmetric_difference()方法有什么区别?

【问题讨论】:

标签: python set-difference symmetric-difference


【解决方案1】:



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

【讨论】:

  • 我将添加运算符^-|& 分别提供对称差、差、并和交运算。因此,在提供的操作中,以下是正确的:a.symmetric_difference(b) == a ^ b(a - b).union(b - a) == a - b | b - a
【解决方案2】:

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

两个集合A和B的对称差是元素的集合 它们在集合 A 或 B 中的任何一个中,但不在两个集合中。

当然,区别是不言自明的。

【讨论】:

  • 我没有注意定义中的“任何一个”关键字。谢谢。
  • 如果您觉得社区已经回答了 ypur 的问题。请选择正确的答案。
【解决方案3】:

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-11
    • 1970-01-01
    • 1970-01-01
    • 2022-11-20
    • 1970-01-01
    • 1970-01-01
    • 2020-10-22
    • 1970-01-01
    相关资源
    最近更新 更多