Python 三項演算子

三項演算子、if文を1行で記載する方法を説明します。


書き方

条件式が真の場合の値 if 条件式 else 条件式が偽の場合の値

実例

scoreが5以上ならMaster、5未満ならBeginnerを、tierに代入する処理を以下のように記載できます。

score = 8
tier = 'Master' if score >= 5 else 'Beginner'

print(tier)
>> Master

三項演算子でif文ネスト

三項演算子でネストすることもできます。

以下の記載と

score = 4
s_type = 'A'

tier = 'Master' if score > 5 else 'Middle' if  s_type == 'A'  else 'Beginner' # 三項演算子

print(tier)
>> Middle

以下の記載は同じ処理になります

score = 4
s_type = 'A'

if s_type == 'A': 
  if score > 5:
    tier = 'Master'
  else:
    tier = 'Middle'
else:
  tier = 'Beginner'

print(tier)
>> Middle

ラムダ式と組み合わせる

関数を1行で記載するラムダ式と、組み合わせて使うこともできます。

list(map(lambda x : 10 if x > 5 else  0, [7, 1, 9, 4]))
>> [10, 0, 10, 0]


メリット・デメリット

単純な条件文による値の変更などは、三項演算子を使用すると、見やすいです。しかし、ネストしたif文を三項演算子で記載すると、可読性が下がることが多いので、注意が必要です。


関連記事