[英]Python assignment to conditional LHS
我知道
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
但這似乎也非常不恰當。
還有另一種我沒想到的方式嗎?
不,你做不到。 使另一個變量保持val
並使用if
。 簡單就是好。
它與元組在一行中是可行的 :
a,b = val if cond else a, val if not cond else b
但是請不要使用它,它是丑陋的,並且復雜得多於簡單的if
語句。
您可以使用函數來封裝邏輯並將其解壓縮回您感興趣的變量:
def decider(x, y, condition, val):
if condition:
return val, y
return x, val
a, b = decider(a, b, cond, value)
如果a
和b
有一些先前的值,你可以簡單地寫:
a, b = (a, val) if condition else (val, b)
否則你可以寫
a, b = (None, val) if condition else (val, None)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.