翻转布尔值而不引用它两次

2024-06-25 07:11:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在寻找一个简短的语法,它看起来有点像x *= -1,其中x是一个数字,但对于布尔型,如果它存在的话。它的行为应该像b = not(b)。有趣的是,当变量名很长时,可以在一行中翻转布尔值

例如,如果你有一个可以打开|关闭房子里的灯的程序,你希望避免写完整的东西:

self.lamps_dict["kitchen"][1] = not self.lamps_dict["kitchen"][1]

Tags: self程序语法not数字dictkitchenlamps
1条回答
网友
1楼 · 发布于 2024-06-25 07:11:03

您可以使用xor operator (^)

x = True
x ^= True
print(x) # False
x ^= True
print(x) # True

编辑:正如注释中的Guimoute所建议的,您甚至可以通过使用x ^= 1来缩短它,但是它会将x的类型更改为一个整数,这可能不是您想要的,尽管它在直接将其用作条件if x:while x:等情况下不会有任何问题

相关问题 更多 >