C言語では、
num = 12;
str = num > 10 ? "Big" : "Small";
という風に三項演算子が使えて便利だった。
Pythonで、これを
>>> num = 12
>>> if num > 10:
... str = 'Big'
... else:
... str = 'Small'
...
>>> str
'Big'
と書くのは面倒だ。この4行のif文を1行にできないものだろうか?
Pythonの本を見ても、if の説明はこの4行タイプばかりである。
実は、これを1行で書くことが可能なのだ。
>>> num = 12
>>> str = 'Big' if num > 10 else 'Small'
>>> str
'Big'
>>> num = 8
>>> str = 'Big' if num > 10 else 'Small'
>>> str
'Small'
もちろん、代入文にせず、式だけでも書ける。
>>> num = 8
>>> 'Big' if num > 10 else 'Small'
'Small'
条件式の書式を書くと、次のようになる。
〈式t〉 if 〈条件式〉 else 〈式f〉
この書き方は、使いこなせれば便利なことは多い。それは、C言語での3項演算子(? :)と同じである。
以下は、良い子は読まない方が良いと思うが書いておく。
実は、これ以外にも1行で書く方法がある。といっても、かなりアレな方法である。
>>> num = 12
>>> ['Small','Big'][num>10]
'Big'
>>> num = 8
>>> ['Small','Big'][num>10]
'Small'
この書式は次のようになっている。
[〈式f〉, 〈式t〉] [〈条件式〉]
条件式がTrueのときに1,Falseのときに0として扱われるので、この書き方が成立する。
この書き方でコンパクトになるが、非推奨である。