【问题标题】:What does "^=" mean in Python?Python中的“^=”是什么意思?
【发布时间】:2019-07-05 21:14:08
【问题描述】:

^= 在 python 中做了什么?

我不确定^^= 在名称或行为上是否相似或相关。

示例问题:

给定一个非空整数数组,每个元素都出现两次,除了一个。找到那个。

nums = [3,3,4,2,2]

def singleNumber(self, nums: List[int]) -> int:
        a = 0
        for i in nums:
            a ^= i
        return a

在这种情况下,我希望输出为4。但我还没有找到任何明确的资源来解释 ^= 运算符的工作原理。

请解释它是什么以及它是如何工作的。

【问题讨论】:

标签: python operators


【解决方案1】:

^ 运算符是二进制 XOR(异或)。所以 ^= 是 i 对 a 的 XOR,放回 a。

例如:

a  = 9 1001
a ^= 5 0101
       ----
   XOR 1100 = 12

a will contain 12

对于列表 [3,3,4,2,2]:

a  = 0 000
a ^= 3 011 -> 011
a ^= 3        011 -> 000
a ^= 4               100 -> 100
a ^= 2                      010 -> 110
a ^= 2                             010 -> 100 = 4

【讨论】:

    【解决方案2】:

    如果您对算法的实际工作方式感兴趣,它取决于不需要的元素是否成对 - 特别是它们的偶数个。使用 XOR,您可以执行以下操作:

    >>> A ^ A
     0
    >>> B == A ^ B ^ A
     True
    

    对于 A 和 B 的任何整数值。即某事物与自身的 XOR 为零,A ^ A 为零。类似地,数字 XOR 0 本身就是一个数字,例如 A ^ 0A。该操作也是可交换的,因此A ^ A ^ B(简化为0 ^ B,即简单的B)与A ^ B ^ A 相同。因此,如果您将此应用于除一个元素之外的所有元素都出现偶数次的列表,那么当它们全部异或在一起时,唯一的奇数仍然存在。

    至于^= 运算符,已经解释过了。 A ^= BA = A ^ B 相同。许多运算符都可以这样使用,例如A += 1A = A + 1 相同。

    【讨论】:

      猜你喜欢
      • 2010-09-29
      • 1970-01-01
      • 2012-01-23
      • 1970-01-01
      • 1970-01-01
      • 2014-06-03
      • 2015-02-13
      • 2013-05-20
      • 2010-10-23
      相关资源
      最近更新 更多