[英]Python one line if-else with different operators
我在python中的if和for語句中擺弄了一行,遇到了以下問題:
我可以進行以下工作:
state = 1 if state == 4 else 2
但是我想在相同的上下文中使用=和+ =,如下所示:
state = 1 if state == 4 else state+=1
如何在一行中實現呢?
+=
不是運算符,它是一個語句 。 您不能在表達式中使用語句。
由於state
是一個整數,所以只需使用+
,它是一個運算符:
state = 1 if state == 4 else state + 1
最終結果與使用+=
就地加法完全相同。
更好的是,使用%
模量運算符:
state = (state % 4) + 1
首先實現您想要實現的目標; 將state
限制為1
到4
之間的值。
您已經將結果指定為state
因此您可以:
state = 1 if state == 4 else state + 1
替代方法是:var = test和“ when true”或“ when false”
state = state == 4 and 1 or state + 1
模數答案對此更好,但以上是有用的捷徑
使用lambda:
state = (lambda n:[n+1,0][n==4] )(state)
因此,本質上:
[n+1,0][1]
#True(1):表示獲取索引#1,即0
[n+1,0][0]
#False(0):表示獲取索引#0,即n + 1
為了使其更具可讀性,我將其分解為一個函數:
def myfunc(n):
ans = [ n+1, 0 ]
if n==4:
return ans[1] # which is the value 0
else:
return ans[0] # which is n+1
state=6
state=myfunc(state) # returns 7
state=4
state=myfunc(state) # returns 0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.