^=Python中的运算符

2024-05-16 16:18:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用Python有段时间了,我第一次从这个link碰到了这个操作符“^=”。在

def solution(A):
    result = 0
    for number in A:
        result ^= number
    return result

当然,我在谷歌上查了一下,但我似乎找不到这个接线员。它有什么作用?在


Tags: innumberforreturndeflinkresultsolution
3条回答

它是异或。https://docs.python.org/3/reference/expressions.html#binary-bitwise-operations 例如:

9 ^ 1

输出:

^{pr2}$

因为在二进制中9101,那么{}就是{}。 异或运算意味着:

101
001
output:
100 #or 8 in natural number

^=相关并在窗帘后面被称为__ixor__。与^相关的特殊方法是__xor__。他们不必表现得一样。在

^{}^{}Augmented Assignment变体,可能时执行就地操作,当__ixor__未实现时,返回到__xor__。在

原则上,该方法的返回值完全取决于__ixor__的实现,但也有一些常见的用例。在

对于两个集合,a ^= b计算集合ab(两个集合中正好有一个集合中的所有元素)的对称差,并且变异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和{}都指向内存中相同的set对象{}。因此,^=的行为与本例中的^不同,后者构建了一个新的集合,如下所示。在

^{pr2}$

请注意,a = a^b已经构建了一个新的集合,名称a已被重新分配到,并且reference仍然引用原始集{1, 2, 3}。在

对于内建不可变的类型(如整数),a ^= b实际上相当于a = a^b。由于整数没有__ixor__方法,Python回到使用__xor__的方法。 在整数的情况下,a ^= b执行一个位不相等的操作,并将名称a重新分配给该计算的结果。在

演示:

>>> a = 5
>>> b = 6
>>> a^b
3

说明:

    101 (5 decimal)
XOR 110 (6 decimal)
-------------------
    011 (3 decimal)

The ^ operator yields the bitwise XOR (exclusive OR) of its arguments, which must be integers.

https://docs.python.org/3/reference/expressions.html#binary-bitwise-operations

与所有其他_=运算符一样,^=将结果赋回变量:a =^ ba = a ^ b相等。在

作为一个函数,它是__ixor__(或^{}),对于非整数类型可能有不同的行为。在

相关问题 更多 >