簡體   English   中英

在 python 中進行條件賦值的最佳方法

[英]Best way to do conditional assignment in python

我經常使用它,但它很丑:

a = (lambda x: x if x else y)(get_something())

所以我寫了這個 function:

def either(val, alt):
    if val:
        return val
    else:
        return alt

所以你可以這樣做:

a = either(get_something(), y)

是否有內置的 function (類似於 T-SQL 中的 ISNULL)?

or操作符做你想做的事:

get_something() or y

事實上,它是可鏈接的,就像COALESCE一樣(與ISNULL不同)。 下面的表達式計算最左邊的參數,該參數轉換為 True。

A or B or C

您可以使用:

a = get_something() or y

如果get_something在 boolean 上下文中為True ,則其值將分配給a 否則y將被分配給a

您可以使用簡單的or ,如下所示:

>>> a = None
>>> b = 1
>>> c = (a or b) # parentheses are optional
>>> c
1

我已經向另一位用戶提供了這個問題的答案。 在這里查看:

回答類似問題

要在此處快速響應,請執行以下操作:

x = true_value if 條件 else false_value

簡單的!

更多條件代碼:

a = b if b else val

對於您的代碼:

a = get_something() if get_something() else val

有了它,你可以做這樣的復雜條件:

a = get_something() if get_something()/2!=0 else val

我還使用(a,b)[condition based on the value of a]形式,將get_something()調用的結果保存到a中,在極少數情況下最好在這里展示: http://mail。 python.org/pipermail/python-list/2002-September/785515.html

...
a=0     b=None     a or b => None      (a,b)[a is None] => 0
a=()    b=None     a or b => None      (a,b)[a is None] => ()
...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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