0

我发现自己需要在第一次(并且只有那时)发生某些事情时更新一个布尔变量。使用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 的方式来模拟(三元条件运算符的二进制版本,例如)猫王运算符 ( ?:) 或空合并运算符(例如??; 因语言而异)。

关于如何保持简短(呃)和清晰的任何想法?

4

1 回答 1

1

每次将其设置为 True 肯定很快:单个机器周期,可能很容易并行处理。如果您想要在逻辑上类似于您尝试做的事情:

inner_has_been_true |= True

这也是一个单周期指令,一个“位设置”操作。这是简写

inner_has_been_true = inner_has_been_true | True
于 2016-02-26T01:54:10.130 回答