🐍 たった1行でif/elseが書ける!三項演算子の魔法
Pythonのif文をいくつも書いていて「もうちょっとスッキリ書けないかな…」と感じたことはありませんか? そんなときの強い味方が三項演算子(条件式)です✨
使いこなせるようになると、4行かかっていた条件分岐がたった1行で済むようになり、コードの見通しが一気に良くなります。「Python初心者」から「ちょっとPythonらしいコードが書ける中級者」へ進むための、最初の一歩としてピッタリの技です🚀
📝 そもそも三項演算子ってなに?
三項演算子とは、条件の結果によって返す値を変えることができる演算子のこと。書き方はとてもシンプルで、次の3つのパーツで構成されます。
Trueのときに返す値 if 条件 else Falseのときに返す値
「True時の値」「条件」「False時の値」の3つの要素から成り立っているため、三項演算子と呼ばれます。普通のif文と違って、必ず値を返す“式”として動くのがポイントです。
✏️ 基本の書き方
age = 25
result = "成人" if age >= 20 else "子供"
print(result)
# → 成人
右辺を読み解くと「ageが20以上なら『成人』、そうでなければ『子供』をresultに入れる」という意味になります。if文を1行で書くようなイメージで、頭から読むと「何をresultに入れたいのか」がすぐ分かるのが気持ちいいところ💡
⚖️ if文と比べてみると、その威力は一目瞭然
同じ処理を従来のif文で書くと、こうなります。
if age >= 20:
result = "成人"
else:
result = "子供"
4行必要だった処理が、三項演算子ならたった1行✨ 行数が減るだけでなく、「resultに値を代入している」という意図が左端でハッキリ伝わるため、可読性も上がります。
- ✅ 1行で書ける → スクリプトが縦に長くならない
- ✅ 必ず値を返す → そのまま代入や関数の引数として使える
- ✅ 意図が明確 → 「変数に値を決めている」と一目で分かる
⚠️ 三項演算子の制約:if/elseの形だけ
便利な三項演算子ですが、覚えておきたい制約もあります。
- 🔸 elifは書けない(後述のネストで代用)
- 🔸 elseの省略は不可(必ず
if 〜 else 〜の形) - 🔸 文ではなく式なので、必ず値を返す
なお、Python 3.8からは「else節のないセイウチ演算子(:=)」が導入されましたが、それはまた別物。三項演算子はあくまでifとelseがセットで使われると覚えておけばOKです👌
🪆 三項演算子は入れ子(ネスト)にもできる
「elifは書けない」と言いましたが、三項演算子をネストさせることで似た表現は可能です。たとえば、こんな条件を考えてみましょう。
- 👴 ageが20以上 → 「成人」
- 🧒 ageが1以上 → 「子供」
- 👶 それ以外(1未満) → 「赤ちゃん」
result = "成人" if age >= 20 else ("子供" if age >= 1 else "赤ちゃん")
左から順に読んでいくと、「成人の条件は20以上、それ以外で1以上なら子供、それ以外なら赤ちゃん」と読めます。実行してみると、こうなります👇
age = 25 # → 成人
age = 19 # → 子供
age = 0.5 # → 赤ちゃん
慣れないうちは少し読みづらく感じるかもしれませんが、使っていくうちに「むしろこちらの方が早く意図を読み取れる」と感じるようになります。とはいえ、ネストが3段4段と深くなると逆に読みづらくなるので、その場合は素直にif文に戻すのが賢明です🧘
💎 こんなときに使うと一気にPythonらしくなる
三項演算子の真価が発揮されるのは、こんなシーンです。
- 🧮 関数の戻り値を条件で切り替えるとき:
return "OK" if status else "NG" - 📋 リスト内包表記と組み合わせるとき:
[x if x > 0 else 0 for x in nums] - 🏷️ 変数の初期化を条件付きで行うとき:
name = user.name if user else "guest" - 🖨️ print文の中で動的にメッセージを変えるとき
これらの場面でif文を毎回書くのはくどく感じます。三項演算子をスッと差し込めるようになると、コードが一気に「書き慣れた人っぽい」雰囲気に化けますよ💫
📚 Pythonの表現力をさらに磨くおすすめ書籍
三項演算子のような「Pythonらしい書き方」を学べる本を厳選して紹介します。動画と合わせて読めば、理解の定着スピードが大きく変わります📖
🌱 はじめての一冊に:会話形式でやさしく
条件分岐や演算子といった基礎概念を、対話形式で図解多めに学べる入門書。「三項演算子って何が嬉しいの?」というところから腹落ちさせたい方にぴったりです。
📘 体系的に学び直す定番:スッキリPython入門
変数・演算子・条件分岐・関数までを順序立てて押さえられる定番書。三項演算子の周辺知識(比較演算子、論理演算子、真偽値)まで地続きで理解でき、抜け漏れがなくなります。
🚀 中級者への階段を上る:Python実践入門
三項演算子、内包表記、ジェネレータ、デコレータなど「Pythonらしさ」を支えるイディオムを実例付きで学べる一冊。初心者を抜けたい方の最強パートナーです📈
✨ コードの質をプロ仕様に:Effective Python
「三項演算子を多用しすぎない方が良いケース」「内包表記との使い分け」など、現場で効くノウハウが90項目に凝縮。一段上の表現力を手に入れたい方に強くおすすめです。
🏆 さらに深く:Fluent Pythonで本格活用
言語仕様の根っこから「なぜそう書くと美しいのか」を理解できる名著。三項演算子の使いどころも、より広い視野で判断できるようになります。
❓ よくある質問(FAQ)
🤔 三項演算子と普通のif文、どっちを使うべき?
「1つの値を条件で切り替えるだけ」なら三項演算子、「複数行の処理を分岐させたい」ならif文がおすすめです。値を1つ決めたいのか、処理を分けたいのかで使い分けると迷いません👌
🪆 ネストはどこまで深くしてもいい?
技術的には何段でもネストできますが、実用上は2段までが読みやすさの限界です。3段以上になると一気に解読しづらくなるので、その場合は素直にif/elif/elseに戻したり、辞書による条件分岐に切り替えるのがおすすめです。
📋 リスト内包表記との組み合わせ方は?
たとえば[x if x >= 0 else 0 for x in nums]のように、内包表記の「値の部分」に三項演算子を埋め込む形が定番です。これで「負の値は0に置き換える」といった処理が1行で書けます🎯
🚫 elseを省略することはできる?
できません。三項演算子は必ずifとelseのセットで使う必要があります。条件を満たさないときに何もしたくない場合は、通常のif文を使うのが正解です。
⚡ elifに相当する書き方は?
三項演算子をネストさせればelifと同じことができます。たとえば「A if 条件1 else (B if 条件2 else C)」と書けば、3パターンの分岐が表現可能です。ただし読みやすさとのバランスを忘れずに⚖️
🎯 まとめ:三項演算子で「中級者っぽい」コードへ
三項演算子は、たった1行でif/elseを表現できる強力なツールです。「値を1つ決める」場面で積極的に使えば、コードの行数は減り、意図はクリアになり、レビューでの「読みやすいね」が増えていきます👏
まずは関数の戻り値や変数の初期化で1つ書き換えてみるところから始めてみましょう。慣れてきたら内包表記と組み合わせて、Pythonらしい表現力を手に入れてください。気づいたとき、あなたのコードは確実にワンランク上のレベルに到達しています🌟


















































コメント