用Pythonic的方式交换1与0
在我的Python程序的某个地方,有一个叫val的变量,它的值可能是1或者0。如果它是1,我就需要把它改成0;如果是0,我就需要把它改成1。
那么,怎样用Python的方式来实现这个呢?
if val == 1:
val = 0
elif val == 0:
val = 1
这段代码太长了!
我这样做了:
swap = {0: 1, 1:0}
这样我就可以使用它了:
swap[val]
还有其他的想法吗?
18 个回答
33
因为在Python中,True
等于1,而False
等于0,
所以你可以直接用var = not var
来改变变量的值。
这样做会把它的值反转过来。
59
最简单的方法是使用位运算符异或(XOR)。
如果你想要重新给 val
赋值:
val ^= 1
如果你不想重新给 val
赋值:
val ^ 1
258
这虽然不是很符合Python的风格,但它适用于任何编程语言。通常来说,val = 1 - val
这种写法是最简单的。