我发现自己需要在第一次发生某些事情时更新一个布尔变量(并且只有这样)。使用var = not var
是不可能的,因为它每次都会继续翻转。
(对不起这个愚蠢的例子;我很难找到一个更明智的例子......)
inner_has_been_two = False
for outer in range(5):
for inner in range(3):
if inner == 2:
if not inner_has_been_two:
inner_has_been_two = True
print(inner_has_been_two)
我们假设我想"触摸"变量尽可能少 - 否则我可以通过简单地省略最里面的if
语句来反复覆盖它。
基本上我正在寻找一种更简洁,pythonic的方式来模拟(三元条件运算符的二进制版本,如)Elvis运算符(?:
)或空合并运算符(例如{{ 1}};因语言而异。
关于如何保持简短(明确)和明确的任何想法?
答案 0 :(得分:1)
每次设置为True肯定很快:单个机器周期,可能很容易并行处理。如果你想要的东西在逻辑上像你想要的那样:
inner_has_been_true |= True
这也是一个单周期指令,一个"位设置"操作。它是
的简写inner_has_been_true = inner_has_been_true | True