Если вас интересует, как на самом деле работает алгоритм, это зависит от нежелательных элементов, которые должны быть парами, в частности, от четного их числа.Используя XOR, вы можете делать такие вещи, как:
>>> A ^ A
0
>>> B == A ^ B ^ A
True
для любых целочисленных значений A и BIe XOR чего-либо с самим собой равно нулю, A ^ A
равно нулю.Точно так же число XOR ноль само по себе, как A ^ 0
это A
.Операция также является коммутативной, поэтому A ^ A ^ B
(который сокращается до 0 ^ B
, то есть просто B) совпадает с A ^ B ^ A
.Поэтому, если вы примените это к списку, в котором все элементы, кроме одного, появляются четное число раз, остается только один нечетный из них, когда они все вместе XOR.
Что касается оператора ^=
,это уже объяснено.A ^= B
совпадает с A = A ^ B
.Многие операторы могут использоваться таким образом, например, A += 1
совпадает с A = A + 1
.