用Pythonic的方式交换1与0

65 投票
18 回答
106950 浏览
提问于 2025-04-15 16:15

在我的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 这种写法是最简单的。

撰写回答