我在 python 中摆弄了一行 if 和 for 语句,并遇到了以下问题:
我可以进行以下工作:
state = 1 if state == 4 else 2
但我想在相同的上下文中使用 = 和 +=,如下所示:
state = 1 if state == 4 else state+=1
我怎样才能在一行中实现这一点?
我在 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 and "when true" or "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