如果变量为0则返回1的紧凑方法是什么?如果变量为1则返回0?

时间:2015-09-30 12:58:53

标签: python boolean invert

考虑到我提供了一个整数变量,下面怎么能变得更紧凑(也许使用布尔)?

indexTag = 0 # or 1
1 if indexTag == 0 else 0

2 个答案:

答案 0 :(得分:7)

您可以使用not

not indexTag

它给你一个布尔TrueFalse),但是Python布尔值是int的子类,并且有一个整数值({{ 1}}是False0True)。您可以将其转换回1的整数,但如果这只是一个布尔值,为什么还要麻烦?

或者你可以减1; int(not indexTag)1 - 011 - 1

0

或者您可以使用条件表达式:

1 - indexTag

演示:

0 if indexTag else 1

答案 1 :(得分:4)

或者您可以使用^XOR),只需:

indexTag = 1 ^ indexTag

这实现了你想要的东西,因为那是XOR所做的:

+---------------+
| Input | Output|
+---+---+-------+ 
| A | B |       |
+---+---+       |
| 0 | 0 |   0   |  
| 0 | 1 |   1   |   <
| 1 | 0 |   1   |
| 1 | 1 |   0   |   <
+---+---+-------+