“ ^ =“在Python中是什么意思?

时间:2019-07-05 21:14:08

标签: python operators

^=在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。但是我还没有找到任何明确的资源来解释^=运算符的工作方式。

请说明它是什么以及它如何工作。

2 个答案:

答案 0 :(得分:3)

^运算符是二进制XOR(异或)。因此^ =是i在a上的异或,放回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

答案 1 :(得分:2)

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

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

用于A和B的任何整数值。与自身的异或为零,A ^ A为零。同样,数字XOR本身就是零,例如A ^ 0A。该操作也是可交换的,因此A ^ A ^ B(简化为0 ^ B,简称为B)与A ^ B ^ A相同。因此,如果将其应用到一个列表,其中除一个元素之外的所有元素都出现偶数次,则所有元素进行异或运算后,唯一的奇数残存。

对于^=运算符,已经进行了解释。 A ^= BA = A ^ B相同。可以通过这种方式使用许多运算符,例如A += 1A = A + 1相同。