How do you get the logical xor of two variables in Python?
How do you get the logical xor of two variables in Python?
If youre already normalizing the inputs to booleans, then != is xor.
How do you get the logical xor of two variables in Python?
bool(a) != bool(b)
You can always use the definition of xor to compute it from other logical operations:
(a and not b) or (not a and b)
But this is a little too verbose for me, and isnt particularly clear at first glance. Another way to do it is:
bool(a) ^ bool(b)
The xor operator on two booleans is logical xor (unlike on ints, where its bitwise). Which makes sense, since bool
is just a subclass of int
, but is implemented to only have the values 0
and 1
. And logical xor is equivalent to bitwise xor when the domain is restricted to 0
and 1
.
So the logical_xor
function would be implemented like:
def logical_xor(str1, str2):
return bool(str1) ^ bool(str2)
Credit to Nick Coghlan on the Python-3000 mailing list.
How do you get the logical xor of two variables in Python?
How do you get the logical xor of two variables in Python?
Bitwise exclusive-or is already built-in to Python, in the operator
module (which is identical to the ^
operator):
from operator import xor
xor(bool(a), bool(b)) # Note: converting to bools is essential
Related posts
- Unpacking a binary file with Python only returns one value
- python – Print raw string from variable? (not getting the answers)
- graphics – Python tcl is not installed properly
- Python csv writer / rewrite /overwrite a row or delete all the rows and add a new one
- Get current URL from browser using python
- How to install opencv-python in python 3.8