我知道
a = val1 if condition else val2
但是有没有办法做类似的事情
a if condition else b = val
抛出一个SyntaxError
(我想这是可以理解的)
我会使用条件,
if condition:
a = val
else:
b = val
但我讨厌在我的程序中出现两次相同的代码(这里是右侧)(在我的真实代码中,val
是一个不平凡的表达式)。我知道我可以创建一个虚拟变量来保存该部分,但这似乎不惯用。
我也想到要做一个元组
ba = (b,a)
ba[bool(condition)] = val
b, a = ba
但这似乎也很不惯用。
还有其他我没有想到的方法吗?
最佳答案
您可以使用函数来封装逻辑并将其解压回您感兴趣的变量:
def decider(x, y, condition, val):
if condition:
return val, y
return x, val
a, b = decider(a, b, cond, value)
关于Python 赋值给条件 LHS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36852729/