在python中进行条件赋值的最佳方法

时间:2011-07-15 08:55:46

标签: python

我倾向于使用这个,但它很难看:

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

所以我写了这个函数:

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

所以你可以这样做:

a = either(get_something(), y)

是否有内置函数(类似于T-SQL中的ISNULL)?

6 个答案:

答案 0 :(得分:35)

or运算符可以执行您想要的操作:

get_something() or y

事实上,它是可链接的,如COALESCE(与ISNULL不同)。以下表达式求值为最左侧的转换为True的参数。

A or B or C

答案 1 :(得分:5)

您可以使用:

a = get_something() or y

如果布尔上下文中get_somethingTrue,则其值将分配给a。否则,y将被分配到a

答案 2 :(得分:4)

您可以使用简单的or,如下所示:

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

答案 3 :(得分:3)

容易!

更多条件代码:

a = b if b else val

代码:

a = get_something() if get_something() else val

这样你可以做到这样复杂的条件:

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

答案 4 :(得分:3)

我已经向其他用户提供了这个问题的答案。在这里查看:

Answer to similar question

要快速回复,请执行以下操作:

x = true_value if condition else false_value

答案 5 :(得分:1)

我还使用(a,b)[condition based on the value of a]表单,将get_something()调用的结果保存到a,在极少数情况下最好显示在这里:http://mail.python.org/pipermail/python-list/2002-September/785515.html < / p>

...
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] => ()
...