本記事では、Pythonの三項演算子について解説していきます。
なぜPythonには特別な三項演算子がないのか?
結論から言うと、Pythonには他のプログラミング言語の様な三項演算子がありません。
しかし、if-else 文を Python の三項演算子として動作するように記述することは可能です。
その主な目的は単純な if-else ブロックを削除することでコード量を小さくすることです。
Pythonは三項演算子でコード量を小さくするのではなく、if-else文そのものを改良してコード量を小さくするのを実現しています。
(個人的には、普通にif-else方式よりも他言語のような三項演算子の方がシンプルで分かりやすいと思いますが、、)
Pythonにおける三項演算子の例
例えば、ある整数が奇数か偶数かをチェックする簡単なコードがあるとします。
ユーザーに数字を入力してもらい、それが奇数か偶数かを表示するのです。
まずは例として、通常のif-elseブロックを使って実装していきます。
x = int(input("何か入力してください:"))
if x % 2 == 0:
int_type ='even'
else:
int_type ='odd'
print(f'入力した数字 {x}は、 {int_type}です')
上記のコードをPython方式の三項演算子に直せば、以下の様になります。
x = int(input("何か入力してください:"))
int_type = 'even' if x % 2 == 0 else 'odd'
print(f'入力した数字 {x}は、 {int_type}です')
結果は以下の通りです。
何か入力してください:
2
入力した数字 2は、 evenです
タプルによるPythonの三項演算子
Pythonはタプルによる三項演算子もサポートしています。
条件がTrueの場合、タプルの最初の値が返されれて、そうでなければ、2番目の値が返されます。
実際に以下のコードになります。
x = int(input("何か入力してください:"))
int_type = ('even','odd')[x % 2]
print(f'入力した数字 {x}は、 {int_type}です')
if-else方式とタプルはどっちがいい?
if-elseベースの三項演算子を使用する場合、条件が最初に評価されます。
タプルベースの実装では、タプル要素が最初に評価され、その後条件が評価されます。
したがって、両方の可能性のある値を生成するために何らかの処理が必要な場合、if-elseの方が効率的です。