如果有的话,我想要一个更 Pythonic 的方式用于以下分支:
if a<b:
a.append('value')
elif a==b:
b.append('value')
else:
do nothing
有没有三元运算符?
如果有的话,我想要一个更 Pythonic 的方式用于以下分支:
if a<b:
a.append('value')
elif a==b:
b.append('value')
else:
do nothing
有没有三元运算符?
显然你可以不考虑 else 情况
if a<b:
a.append('value')
elif a==b:
b.append('value')
使用嵌套的三元运算符。
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
你可以这样做:
result = a<b and first_action or a==b and second_action or third_action
*_action 适合您问题中的“做某事”代码
您的
if a<b:
a.append('value')
elif a==b:
b.append('value')
else:
do nothing
不能重写太多,就这样就可以了。也许只是删除最后两行(否则/什么都不做)。
我在这里看到的唯一参数化是:
if a <= b:
(a,b)[a==b].append('value')
但这很丑陋。
对于您的确切情况,其中之一将起作用:
[b, a, []][cmp(x, y)].append('value')
[b, a, []][cmp(x, y)] += ['value']
请不要这样做。您当前的代码很容易阅读。