リストへのインデックス作成
の用法
[expression_when_false, expression_when_true][condition] # or
(expression_when_false, expression_when_true)[condition]
PythonではTrueが1に等しい(しかしそうではない!)1であり、Falseが0に等しい(しかしそうではない!)という事実を利用します。上記の式は2つの要素のリストを作成し、条件の結果を使用してインデックスを作成します。 1つの式のみをリストして返します。この方法の欠点は、両方の式が評価されることです。
および-またはショートカット
Pythonの作成以来、この操作の形式がありました。
condition and expression_when_true or expression_when_false
これはショートカットを取り、1つの式のみを評価しますが、バグが発生しやすい欠点があります。expression_when_trueはtrue以外の値に評価されてはならず、そうでない場合、結果はexpression_when_falseになり ます。およびはPythonで「短絡」しており、次のルールが適用されます。and
or
a and b #→ a if a is false, else b
a or b #→ a if a is true, else b
条件がfalseの場合、 expression_when_trueは評価されず、結果はexpression_when_falseになります。OTOH、条件がtrueの場合、結果は(expression_when_trueまたはexpression_when_false);の結果になります。上記の表を参照してください。
三項条件演算子
もちろん、Python 2.5以降、三項条件演算子があります。
expression_when_true if condition else expression_when_false
奇妙な(Cのような三項条件演算子に慣れている場合)オペランドの順序は、多くのことに起因しています。一般的な意図は、条件がほとんどの場合真である必要があることです。これにより、最も一般的な出力が最初に来て、最も目立つようになります。