我已经使用Python一段时间了,我第一次从link碰到了这个运算符“ ^ =”。
def solution(A):
result = 0
for number in A:
result ^= number
return result
当然,我做了一些谷歌搜索,但似乎找不到该运算符。它是做什么的?
答案 0 :(得分:2)
与^=
相关并在幕后被调用的特殊方法是__ixor__
。与^
相关的特殊方法是__xor__
。他们不必表现相同。
__ixor__
是Augmented Assignment的__xor__
变体,在可能时执行就地操作,而在未实现__xor__
时退回到__ixor__
。
原则上,该方法的返回值完全取决于__ixor__
的实现,但是有一些常见的用例。
对于两个集合,a ^= b
计算集合a
和b
(所有元素恰好在两个集合之一中)的对称差 变异 a
。
>>> a = {1, 2, 3}
>>> b = {1, 4, 5}
>>> reference = a
>>>
>>> a ^= b
>>> a
{2, 3, 4, 5}
>>> reference
{2, 3, 4, 5}
请注意,a
已被替换为 ,因此a
和reference
都指向同一个set
对象{{1} } 在记忆中。因此,{2, 3, 4, 5}
在这种情况下的行为与^=
不同,它建立了一个新集合,如下所示。
^
请注意,>>> a = {1, 2, 3}
>>> b = {1, 4, 5}
>>> reference = a
>>> a = a^b
>>> a
{2, 3, 4, 5}
>>> reference
{1, 2, 3}
建立了一个新集合,名称a = a^b
已被重新分配,而a
仍指原始集合{{1} }。
对于内置的不可变类型(如整数),reference
确实等同于{1, 2, 3}
。由于整数没有a ^= b
方法,因此Python退回到使用a = a^b
。
对于整数,__ixor__
执行按位不等于运算,并将名称__xor__
重新分配给该计算结果。
演示:
a ^= b
说明:
a
答案 1 :(得分:1)
^
运算符产生其参数的按位XOR(异或),该值必须为整数。
https://docs.python.org/3/reference/expressions.html#binary-bitwise-operations
与所有其他_=
运算符一样,^=
将结果分配回变量:a =^ b
与a = a ^ b
等效。
根据功能,它是__ixor__
(或operator.ixor
),并且对于非整数类型可能具有不同的行为。
答案 2 :(得分:1)
是XOR。 https://docs.python.org/3/reference/expressions.html#binary-bitwise-operations 例如:
9 ^ 1
输出:
8
因为二进制文件9
是101
,所以1
是001
。
XOR操作的意思是:
101
001
output:
100 #or 8 in natural number
答案 3 :(得分:1)
a ^= b
等同于a = a^b
^
-是XOR运算符