^=
在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
。但是我还没有找到任何明确的资源来解释^=
运算符的工作方式。
请说明它是什么以及它如何工作。
答案 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 ^ 0
是A
。该操作也是可交换的,因此A ^ A ^ B
(简化为0 ^ B
,简称为B)与A ^ B ^ A
相同。因此,如果将其应用到一个列表,其中除一个元素之外的所有元素都出现偶数次,则所有元素进行异或运算后,唯一的奇数残存。
对于^=
运算符,已经进行了解释。 A ^= B
与A = A ^ B
相同。可以通过这种方式使用许多运算符,例如A += 1
与A = A + 1
相同。