【Python】三項演算子でif文を1行で記述する方法

【Python】三項演算子でif文を1行で記述する方法

当ページのリンクには広告が含まれています。

記事の文字数:1676

本記事ではif文を1行で書く三項演算子の使い方を解説します!Pythonの三項演算子を用いると、複数行で記載するif文を1行で簡潔に記載することができ、条件に基づいた値を設定することができます。基本文法から実用例、ネスト時の注意点まで詳しく紹介します。


スポンサーリンク

Pythonの三項演算子を使うと、if文を1行で実装することができます。
本記事では、三項演算子を使ったif文の書き方を解説します。

三項演算子の使い方

Pythonで条件分岐を記述する際、一般的に使われるのがif文です。これは直感的で分かりやすく、よく使われる基本の文法です。

x = 10
if x > 5:
y = "big"
else:
y = "small"

上記のような記述でも、たった変数yに値を代入するけで、記述4行を要しています。簡単な条件なら、もっと簡潔に書ける方法があるのでは?と思うかもしれません。

そこで登場するのが「三項演算子」です。Pythonでは、たった1行で条件分岐を実現できます!

三項演算子の例
x = 10
y = "big" if x > 5 else "small"

これだけで、if-elseの分岐を表現できました。コードがより簡潔になり、読みやすさも高まります。

三項演算子の構文

三項演算子の文法フォーマットは、比較的に簡単で視覚的にも分かりやすいです。
基本構文は以下の通りです。

構文
条件がTrueのときの値 if 条件 else 条件がFalseのときの値

これによって、通常のif文より記述も簡略になります。三項演算子の実装例を以下に示します。

age = 18
status = "adult" if age >= 18 else "minor"
print(status) # 出力: adult

この例では、ageが18歳以上であるかどうかを判定し、Trueの場合はadult、Falseの場合はminorを割り当てています。

三項演算子の活用例

三項演算子で奇数・偶数を判定する

以下は通常の実装で奇数偶数を判定するプログラムです。

example1.py
num = 5
if num % 2 == 0:
result = "偶数"
else :
result = "奇数"
print(result)

上記プログラムの実行結果は以下の通りです。

実行結果
$ python example1.py
奇数

三項演算子に変換すると以下のようになり、1行で記載できます。

example2.py
num = 6
result = "偶数" if num % 2 == 0 else "奇数"
print(result)

上記プログラムの実行結果は以下の通りです。

実行結果
$ python example2.py
偶数

三項演算子でNoneチェックを行う

以下のように変数の中身がNoneであるかのチェックにも活用できます。

example3.py
name = None
greeting = name if name is not None else "ゲスト"
print(greeting)

上記プログラムの実行結果は以下の通りです。

実行結果
$ python example3.py
ゲスト

リスト内包表記で三項演算子を使う

以下のように、三項演算子は内包表記と組み合わせて記述することもできます。

example4.py
numbers = [1, 2, 3, 4, 5]
result = ["偶数" if num % 2 == 0 else "奇数" for num in numbers]
print(result)

上記プログラムの実行結果は以下の通りです。

実行結果
$ python example4.py
['奇数', '偶数', '奇数', '偶数', '奇数']

ネストされた三項演算子は可読性が低下

複雑な条件分岐も三項演算子を使って書くことができます。例えば、入れ子にして複数段階の条件を表することも可能です。 三項演算子は入れ子にすることもできますが、可読性が低下する可能性があり、ネストされた三項演算子の実装はお勧めしません。

以下の例では、xがyより大きければxが大きい、yと同じならば同じ、それ以外はyが大きいと、入れ子の三項演算子を使って表現しています。

example5.py
x = 10
y = 20
result = "xが大きい" if x > y else "同じ" if x == y else "yが大きい"
print(result)

上記プログラムの実行結果は以下の通りです。

実行結果
$ python example5.py
yが大きい

以下の例では、xが10より大きければbig、5より大きければmedium、それ以外はsmallと、入れ子の三項演算子を使って表現しています。

example6.py
x = 7
result = "big" if x > 10 else ("medium" if x > 5 else "small")
print(result)

上記プログラムの実行結果は以下の通りです。

実行結果
$ python example6.py
medium

こうして入れ子を重ねると、読み手にとって分かりづらいコードになりがちです。そのため、複雑な分岐を必要とする場合は、普通のif-elif-else文を使った方がよい場合も多いでしょう。

三項演算子まとめ

三項演算子の特徴をまとめると以下の通りです。

  • シンプルな実装: Pythonの三項演算子を使うと、if条件に基づく値設定を簡潔に実装することができます。
  • 可読性: 短い条件やシンプルなロジックには適していますが、複雑なロジックでは可読性が低下します。この場合、通常のif-else文を使用した方が良いでしょう。
  • 複雑な条件: 複雑な条件を入れると混乱しやすくなるため、コメントを追加するか、通常のif-elif-else文を使用することを検討してください。

簡単なif-elseをさらに簡潔に1行で書きたい場合は、Pythonの三項演算子を活用しましょう。 特にシンプルなロジックを書く場面では重宝します。 しかし、過度なネストや複雑な分岐になりそうな場合は、読者にとって解読性が落ちるため、適切なバランス感覚を持って使うことが大切です。


Pythonユーザにお勧めの本

スッキリわかるPython入門 第2版
(スッキリわかる入門シリーズ)

新品価格
¥2,750 から
(2025/5/10 15:50時点)

独習Python

新品価格
¥2,970 から
(2025/5/10 16:00時点)

VTuberサプーが教える!  Python
初心者のコード/プロのコード

新品価格
¥2,803 から
(2025/5/10 16:01時点)

Python1年生 第2版
体験してわかる!会話でまなべる!
プログラミングのしくみ

新品価格
¥1,960 から
(2025/5/10 20:15時点)


以上で本記事の解説を終わります。
よいITライフを!
Scroll to Top