2

Python で 1 行の if ステートメントと for ステートメントをいじっていたところ、次の問題に遭遇しました。

私は次のようなものを作ることができます:

state = 1 if state == 4 else 2

しかし、次のように = と += を同じコンテキストで使用したい:

state = 1 if state == 4 else state+=1

これを1行で実装するにはどうすればよいですか?

4

5 に答える 5

6

+=は演算子ではなく、ステートメントです。式でステートメントを使用することはできません。

stateは整数であるため、演算子である を使用するだけ+です

state = 1 if state == 4 else state + 1

+=最終結果は、インプレース加算を使用した場合とまったく同じです。

さらに良いことに、%モジュラス演算子を使用します。

state = (state % 4) + 1

最初に達成したかったことを達成します。とstateの間の値に制限します。14

于 2015-07-26T14:25:28.800 に答える
1

代入はPythonのではないため、これは不可能です。

Python では式のみが値を持ちます。これは、たとえば JavaScript とは異なります。代入を含むほとんどすべてが値を持ちます。

ただし、次のようにプログラムを作成できます。

state = 1 if state == 4 else state + 1

これにより、割り当てではなく、状態を条件とする値が作成されます。状態変数には常に新しい値が割り当てられるため、これはあなたのケースで機能します。

一般的なケースでは、現在の状態に応じてさまざまな変数を更新したいとしましょう。通常のifステートメントに固執する必要があります。三項演算子 ( x if C else y) を使いすぎないでください。コードが読みやすくなる場合にのみ使用してください。

于 2015-07-26T14:25:46.410 に答える
0

すでに結果を割り当てているstateので、次のことができます。

state = 1 if state == 4 else state + 1
于 2015-07-26T14:26:49.543 に答える
0

これを行う別の方法は次のとおりです: var = test and "when true" or "when false"

state = state == 4 and 1 or state + 1

これには係数の答えの方が適していますが、上記は便利なショートカットです

于 2015-07-26T15:16:30.700 に答える