※現在、ブログ記事を移行中のため一部表示が崩れる場合がございます。
順次修正対応にあたっておりますので何卒ご了承いただけますよう、お願い致します。

Pythonで三項演算子を使いたい


2016年 11月 27日

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として扱われるので、この書き方が成立する。


この書き方でコンパクトになるが、非推奨である。