Python检查是否只有一个对象不是None
我有两个python对象Python检查是否只有一个对象不是None,python,Python,我有两个python对象a和b 检查这些对象中是否只有一个是None?使用Python的^(XOR)操作符,最好/最有效/最具Python风格的方法是什么 (a is None) ^ (b is None) 实际上,您需要的是关于这两个对象是否为None的XOR或Exclusive or函数。以下内容适用于您: (a为无)^(b为无) 关于如何在Python中获取对象上的XOR,可以在这里找到更详尽的答案: 您似乎在问3个不同的问题。你想要最好的,最有效的,还是最有活力的?第一个和第三个是观点
a
和b
检查这些对象中是否只有一个是
None
?使用Python的^
(XOR)操作符,最好/最有效/最具Python风格的方法是什么
(a is None) ^ (b is None)
实际上,您需要的是关于这两个对象是否为None的XOR或Exclusive or函数。以下内容适用于您:
(a为无)^(b为无)
关于如何在Python中获取对象上的XOR,可以在这里找到更详尽的答案:
您似乎在问3个不同的问题。你想要最好的,最有效的,还是最有活力的?第一个和第三个是观点,所以离题了。第二个可能并不重要:
如果不是的话
也许?总和(x对(a,b)中的x是无的)==1
听起来有些过分了:)(a是无的)!=(b为无)
布尔值是整数True==1
,False==0
。这是用石头写的,我不知道是否最好使用=代码>。是的,逻辑和按位异或对于布尔运算是等价的,但仍然…。@juanpa.arrivillaga我也被撕裂了。当我想到“两个布尔值中只有一个是真的”时,我自动地想到了XOR,但是=代码>也适用。这就是为什么我在这里引用了老问题:是的,对我来说,问题是位运算符和逻辑运算符之间的区别。不幸的是,python没有逻辑上的异或运算符。当我浏览代码并看到按位^
,我认为“这里正在进行一些按位操作”,但另一方面,=代码>并不是我脑海中的“异或”。我做了一个快速的基准测试,^似乎稍微更有效率。