Pythonの三項演算子(条件式)の書き方【if-else文を1行で】

Pythonの三項演算子(条件式)の書き方について解説します。

Pythonの三項演算子(条件式)の書き方【if-else文を1行で】

Pythonの三項演算子(条件式)は、if文を一行で書くことができる式のことです。記法の中に、式や変数の被演算子が3つ登場するので、『三項』演算子と呼ばれます。

厳密に言うと、他のプログラミング言語における条件式 ? Trueの時の値 : Falseの時の値のような形の記法を三項演算子と呼び、Pythonでは条件式(Conditional Expressions)と呼ばれますが、同様のことが実現できるため、Pythonにおいても三項演算子と呼ぶ人が多いです。

この記事では、Pythonの三項演算子(条件式)の基本的な書き方に加え、リスト内包表記との組み合わせのような、より複雑な書き方についても解説します。

三項演算子(条件式)の基本的な書き方

Pythonの三項演算子(条件式)は、“X if C else Y”という書き方で、C(条件式)がTrueの場合にはXFalseの場合にはYを返す式になります。XYは文字列や数値などの値だけではなく、通常の式としても評価できます。

#三項演算子(条件式)の基本的な書き方

# 変数が奇数か偶数かによって返す値を変える
x = 1
print("偶数" if x % 2 == 0 else "奇数")
# 奇数

x = 2
print("偶数" if x % 2 == 0 else "奇数")
# 偶数


# 式を返すこともできる
# 例:変数が奇数なら2乗、偶数なら2倍にして返す
x = 11
result = x*2 if x % 2 == 0 else x**2
print(result)
# 121

条件式の中では、andorのようなPythonの通常の論理演算子も利用することができます。

#三項演算子(条件式)のなかでandやorを使う

# ifの条件式でandを使う
x = 10
print("偶数かつ正の値" if x % 2 == 0 and x > 0 else "奇数もしくは負の値")
# 偶数かつ正の値

x = -5
# 奇数もしくは負の値

三項演算子(条件式)とif-elif-elseを組み合わせる

三項演算子の基本的な書き方は、if-else文を1行で書いたものでした。複数の条件分岐をしたい場合には、if-elif-else文を使うことがありますが、三項演算子では少し複雑な書き方になります。

具体的な方法としては、三項演算子をネストする形になり、if-elseelseの条件式の中に、もう一つif-elseによる三項演算子を書くことで実現できます。

#三項演算子(条件式)とif-elif-else文の組み合わせ

# if-elseのelse部分にもう一つif-elseを入れる
x = 10
result = "ゼロ" if x == 0 else "正の値" if x > 0 else "負の値"
print(result)
# 正の値

三項演算子は前から順に処理されていくため、最初のifの条件に合わなければ、1つ目のelse以降が評価され、その中でのif-elseの分岐によって最終的な戻り値が決定されます。

リスト内包表記と三項演算子(条件式)を組み合わせる

リスト内包表記はリストを1行で作成できる記法ですが、三項演算子と相性がよく、合わせて使われることが多いです。具体的には、リストを作成する際に、特定の条件に合わせてリストに格納する値を変える場合に使用できます。

リスト内包表記の基本的な書き方は以下の記事を参考にしてください。

# 三項演算子とリスト内包表記の組み合わせ

# 0から9までで、奇数と偶数でリストに格納する要素を変える
result = ["偶数" if i % 2 == 0 else "奇数" for i in range(10)]
print(result)
# ['偶数', '奇数', '偶数', '奇数', '偶数', '奇数', '偶数', '奇数', '偶数', '奇数']