如果给我提供了一个整型变量,那么如何使下面的代码更加紧凑(可能使用布尔值)?
indexTag = 0 # or 1
1 if indexTag == 0 else 0
最佳答案
您可以使用not
:
not indexTag
这给了您一个布尔值(
True
或False
),但是python布尔值是int
的一个子类,并且有一个整数值(False
是0
,True
是1
)。你可以用int(not indexTag)
把它转换成一个整数,但是如果这只是一个布尔值,为什么要麻烦呢?或者你可以从1中减去;
1 - 0
是1
,而1 - 1
是0
: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