もしあれば、次のブランチのためのよりPython的な方法が欲しいです:
if a<b:
a.append('value')
elif a==b:
b.append('value')
else:
do nothing
そのための三項演算子はありますか?
もしあれば、次のブランチのためのよりPython的な方法が欲しいです:
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が質問の「dosth」コードに適合する場所
あなたの
if a<b:
a.append('value')
elif a==b:
b.append('value')
else:
do nothing
あまり書き直せないのでそのままOKです。たぶん、最後の2行を削除するだけです(それ以外の場合は何もしません)。
私がここで見る唯一のパラメータ化は次のとおりです。
if a <= b:
(a,b)[a==b].append('value')
しかし、それは単に醜いです。
正確なケースでは、次のいずれかが機能します。
[b, a, []][cmp(x, y)].append('value')
[b, a, []][cmp(x, y)] += ['value']
これをしないでください。現在のコードは読みやすいです。