Python:切换布尔值的简洁方法"一次" (即朝一个方向)

时间:2016-02-26 01:47:02

标签: python operators toggle binary-operators

我发现自己需要在第一次发生某些事情时更新一个布尔变量(并且只有这样)。使用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}};因语言而异。

关于如何保持简短(明确)和明确的任何想法?

1 个答案:

答案 0 :(得分:1)

每次设置为True肯定很快:单个机器周期,可能很容易并行处理。如果你想要的东西在逻辑上像你想要的那样:

inner_has_been_true |= True

这也是一个单周期指令,一个"位设置"操作。它是

的简写
inner_has_been_true = inner_has_been_true | True