如果给我提供了一个整型变量,那么如何使下面的代码更加紧凑(可能使用布尔值)?

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

最佳答案

您可以使用not

not indexTag

这给了您一个布尔值(TrueFalse),但是python布尔值是int的一个子类,并且有一个整数值(False0True1)。你可以用int(not indexTag)把它转换成一个整数,但是如果这只是一个布尔值,为什么要麻烦呢?
或者你可以从1中减去;1 - 01,而1 - 10
1 - indexTag

或者可以使用条件表达式:
0 if indexTag else 1

演示:
>>> for indexTag in (0, 1):
...     print 'indexTag:', indexTag
...     print 'boolean not:', not indexTag
...     print 'subtraction:', 1 - indexTag
...     print 'conditional expression:', 0 if indexTag else 1
...     print
...
indexTag: 0
boolean not: True
subtraction: 1
conditional expression: 1

indexTag: 1
boolean not: False
subtraction: 0
conditional expression: 0

10-08 08:09