web-dev-qa-db-ja.com

python?(条件付き/三元)代入の演算子

Cおよび他の多くの言語には、 条件付き(別名3項) 演算子があります。これにより、条件の真理に基づいて2つの値の間で非常に簡潔な選択を行うことができ、割り当てを含む式が非常に簡潔になります。

私のコードには、Pythonで4行かかる条件付きの割り当てがたくさんあることがわかっているため、これが恋しいです。

if condition:
    var = something
else:
    var = something_else

一方、Cでは次のようになります。

var = condition? something: something_else;

ファイルで1〜2回は問題ありませんが、条件付きの割り当てが多数ある場合、行数が爆発し、最悪の場合、それらに目が引かれます。

条件演算子の簡潔さが気に入っています。これは、コードをスキミングするときに、非戦略的と思われるものが邪魔にならないようにするためです。

では、Pythonで、割り当てを1行にまとめて条件演算子の利点を概算するために使用できるトリックはありますか?

86
Will

Pythonにはこのような演算子があります:

variable = something if condition else something_else

または、推奨されませんが(@karadocのコメントを参照):

variable = (condition and something) or something_else
160
carl

古いPythonコードでは、トリックを見ることができます:

condition and something or something_else

ただし、これは非常に優れた... if ... else ...コンストラクト:

something if condition else something_else
13
Greg Hewgill