簡體   English   中英

Python賦值給條件LHS

[英]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)

如果ab有一些先前的值,你可以簡單地寫:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM