2016-02-26 29 views
0

我發現自己需要更新一個布爾變量,當第一次發生的事情(和只有然後)。使用var = not var是不可能的,因爲它每次都會繼續觸發。Python:簡單的方法來切換布爾「一次」(即在一個方向)

(對不起,我傻傻的例子,我在努力尋找一種更明智的...)

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) 

假設我想「觸摸」變量儘可能少,否則我可以只覆蓋它一次又一次地通過簡單地省略最內層的陳述。基本上我正在尋找一種更簡潔的pythonic方式來模擬Elvis算子(?:)或空合併運算符(例如??;根據語言變化)的三元條件運算符的二進制版本。

有關如何保持簡短(er)和清晰的任何想法?

+0

哦,只是想起來。我甚至玩弄了寫作的想法:'inner_has_been_two = True如果不是inner_has_been_two'。這是一行而不是兩行;但仍然不是太優雅,恕我直言。 – NicApicella

+2

inner_has_been_true | =真 – Prune

+0

@Prune:究竟是什麼意思? – zondo

回答

1

每次將其設置爲True確實很快:單個機器週期,可能容易並行處理。如果你想要的東西在邏輯上像你試圖做:

inner_has_been_true |= True 

這也是一個單週期指令,一「位設置」操作。這是速記

inner_has_been_true = inner_has_been_true | True 
+0

'inner_has_been_true | = True'是'inner_has_been_true = inner_has_been_true |的簡寫。真正''不等於'inner_has_been_true = inner_has_been_true或真' – Alex

+0

謝謝,這就是我一直在尋找! – NicApicella

+0

@Alex - 謝謝。我糾正了我的答案。我想這周我一直在輸入太多的用戶文檔。 – Prune

相關問題