Python で 1 行の if ステートメントと for ステートメントをいじっていたところ、次の問題に遭遇しました。
私は次のようなものを作ることができます:
state = 1 if state == 4 else 2
しかし、次のように = と += を同じコンテキストで使用したい:
state = 1 if state == 4 else state+=1
これを1行で実装するにはどうすればよいですか?
Python で 1 行の if ステートメントと for ステートメントをいじっていたところ、次の問題に遭遇しました。
私は次のようなものを作ることができます:
state = 1 if state == 4 else 2
しかし、次のように = と += を同じコンテキストで使用したい:
state = 1 if state == 4 else state+=1
これを1行で実装するにはどうすればよいですか?
+=
は演算子ではなく、ステートメントです。式でステートメントを使用することはできません。
state
は整数であるため、演算子である を使用するだけ+
です。
state = 1 if state == 4 else state + 1
+=
最終結果は、インプレース加算を使用した場合とまったく同じです。
さらに良いことに、%
モジュラス演算子を使用します。
state = (state % 4) + 1
最初に達成したかったことを達成します。とstate
の間の値に制限します。1
4
Python では式のみが値を持ちます。これは、たとえば JavaScript とは異なります。代入を含むほとんどすべてが値を持ちます。
ただし、次のようにプログラムを作成できます。
state = 1 if state == 4 else state + 1
これにより、割り当てではなく、状態を条件とする値が作成されます。状態変数には常に新しい値が割り当てられるため、これはあなたのケースで機能します。
一般的なケースでは、現在の状態に応じてさまざまな変数を更新したいとしましょう。通常のif
ステートメントに固執する必要があります。三項演算子 ( x if C else y
) を使いすぎないでください。コードが読みやすくなる場合にのみ使用してください。
すでに結果を割り当てているstate
ので、次のことができます。
state = 1 if state == 4 else state + 1
これを行う別の方法は次のとおりです: var = test and "when true" or "when false"
state = state == 4 and 1 or state + 1
これには係数の答えの方が適していますが、上記は便利なショートカットです