6

もしあれば、次のブランチのためのよりPython的な方法が欲しいです:

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

そのための三項演算子はありますか?

4

5 に答える 5

4

明らかに、elseケースはオフのままにしておくことができます

if a<b:
   a.append('value')
elif a==b:
   b.append('value')
于 2013-02-13T10:24:45.767 に答える
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
于 2013-02-13T10:11:52.153 に答える
1

あなたはこのようなことをすることができます:

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

*_actionが質問の「dosth」コードに適合する場所

于 2013-02-13T10:13:35.350 に答える
1

あなたの

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')

しかし、それは単に醜いです。

于 2013-02-13T10:17:48.103 に答える
0

正確なケースでは、次のいずれかが機能します。

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

これをしないでください。現在のコードは読みやすいです。

于 2013-02-13T10:20:17.480 に答える