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 age >= 20:
result = "成人"
else:
result = "子供"
4行必要だった処理が、三項演算子ならたった1行✨ 行数が減るだけでなく、「resultに値を代入している」という意図が左端でハッキリ伝わるため、可読性も上がります。
便利な三項演算子ですが、覚えておきたい制約もあります。
if 〜 else 〜の形)なお、Python 3.8からは「else節のないセイウチ演算子(:=)」が導入されましたが、それはまた別物。三項演算子はあくまでifとelseがセットで使われると覚えておけばOKです👌
「elifは書けない」と言いましたが、三項演算子をネストさせることで似た表現は可能です。たとえば、こんな条件を考えてみましょう。
result = "成人" if age >= 20 else ("子供" if age >= 1 else "赤ちゃん")
左から順に読んでいくと、「成人の条件は20以上、それ以外で1以上なら子供、それ以外なら赤ちゃん」と読めます。実行してみると、こうなります👇
age = 25 # → 成人
age = 19 # → 子供
age = 0.5 # → 赤ちゃん
慣れないうちは少し読みづらく感じるかもしれませんが、使っていくうちに「むしろこちらの方が早く意図を読み取れる」と感じるようになります。とはいえ、ネストが3段4段と深くなると逆に読みづらくなるので、その場合は素直にif文に戻すのが賢明です🧘
三項演算子の真価が発揮されるのは、こんなシーンです。
return "OK" if status else "NG"[x if x > 0 else 0 for x in nums]name = user.name if user else "guest"これらの場面でif文を毎回書くのはくどく感じます。三項演算子をスッと差し込めるようになると、コードが一気に「書き慣れた人っぽい」雰囲気に化けますよ💫
三項演算子のような「Pythonらしい書き方」を学べる本を厳選して紹介します。動画と合わせて読めば、理解の定着スピードが大きく変わります📖
条件分岐や演算子といった基礎概念を、対話形式で図解多めに学べる入門書。「三項演算子って何が嬉しいの?」というところから腹落ちさせたい方にぴったりです。
変数・演算子・条件分岐・関数までを順序立てて押さえられる定番書。三項演算子の周辺知識(比較演算子、論理演算子、真偽値)まで地続きで理解でき、抜け漏れがなくなります。
三項演算子、内包表記、ジェネレータ、デコレータなど「Pythonらしさ」を支えるイディオムを実例付きで学べる一冊。初心者を抜けたい方の最強パートナーです📈
「三項演算子を多用しすぎない方が良いケース」「内包表記との使い分け」など、現場で効くノウハウが90項目に凝縮。一段上の表現力を手に入れたい方に強くおすすめです。
言語仕様の根っこから「なぜそう書くと美しいのか」を理解できる名著。三項演算子の使いどころも、より広い視野で判断できるようになります。
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らしい表現力を手に入れてください。気づいたとき、あなたのコードは確実にワンランク上のレベルに到達しています🌟