是否有更优雅的pythonic方式表达以下条件表达式?

时间:2013-02-13 10:10:36

标签: python

如果有的话,我想为以下分支提供更多的pythonic方式:

if a<b:
   a.append('value')
elif a==b:
   b.append('value')
else:
   do nothing

那有三元运算符吗?

5 个答案:

答案 0 :(得分:4)

使用嵌套的三元运算符。

func1() if a<b else func2() if a==b else func3()

对于您的具体示例:

a.append('value') if a<b else b.append('value') if a==b else None

答案 1 :(得分:4)

显然,你可以将其他情况放弃

if a<b:
   a.append('value')
elif a==b:
   b.append('value')

答案 2 :(得分:1)

你可以这样做:

result = a<b and first_action or a==b and second_action or third_action

* _action符合你问题中的“做某事”代码

答案 3 :(得分:1)

你的

if a<b:
   a.append('value')
elif a==b:
   b.append('value')
else:
   do nothing

不能重写,它可以。也许只是删除最后两行(否则/什么都不做)。

我在这里看到的唯一参数化是:

if a <= b:
    (a,b)[a==b].append('value')

但这简直太丑了。

答案 4 :(得分:0)

对于完全的情况,其中一个可行:

[b, a, []][cmp(x, y)].append('value')
[b, a, []][cmp(x, y)] += ['value']

请不要这样做。您当前的代码易于阅读。