How to use XOR in Python
XOR, short for exclusive OR, is a logical operation that takes two operands and returns a boolean value of True
if and only if exactly one of the operands is True
.
In Python, we can perform the XOR operation on two or more values using a variety of methods/operators, including the ^
operator. In the following sections we'll see this operator and a number of different functions that can help us achieve the same XOR result, some of which are better for certain use-cases than others.
Using the ^
Operator
Here is an example of using the ^
operator to perform XOR on two boolean values:
>>> True ^ False
True
>>> False ^ False
False
>>> True ^ True
False
As you can see, when exactly one of the operands is True
, the XOR operation returns True
. Otherwise, it returns False
.
Using the xor
Function
We can also use the xor
function from the operator
module to perform XOR on two values. Here is an example:
>>> from operator import xor
>>> xor(True, False)
True
>>> xor(False, False)
False
>>> xor(True, True)
False
As you can see, the xor
function works in the same way as the ^
operator, but it provides an alternative syntax for performing XOR operations in Python.
Using Logical and
and or
Operators
In addition to the ^
operator and the operator.xor
function, we can also use the and
and or
operators to achieve the same result as XOR. This can be done using the following logic:
xor = lambda a, b: (a and not b) or (not a and b)
Here is an example of using this logic to perform XOR in Python:
>>> (True and not False) or (not True and False)
True
>>> (False and not False) or (not False and False)
False
>>> (True and not True) or (not True and True)
False
As you can see, this method produces the same result as the ^
operator and the xor
function. However, it may be less efficient because it involves more operations.
Using the functools.reduce
Function
Another way to perform XOR in Python is to use the functools.reduce
function, which allows us to apply a binary operation to a sequence of values. Here is an example of using reduce
to perform XOR on a list of boolean values:
>>> from functools import reduce
>>> from operator import xor
>>> reduce(xor, [True, False, False, True])
False
As you can see, the reduce function applies the xor
function to each element of the list, starting from the first two elements and then continuing with the result of the previous operation and the next element in the list. In this case, the final result is False
, because the number of True
values in the list is even.
One of the advantages of this is that we can more easily use it to perform XOR on an arbitrary number of values.
Conclusion
In this article, we have seen four different ways to perform XOR in Python: using the ^
operator, using logical and
/or
operators, using the xor
function from the operator
module, and using the functools.reduce
function. All four ways of doing this provide a simple and concise syntax for performing XOR operations in Python.