Pythonでプログラムを書いていると、「条件によって変数に入れる値を変えたい」という場面がよくありますよね。そんなときにif文を使うと、たった1つの値を出し分けるだけなのに4行も書くことになり、「ちょっと面倒だな…」と感じたことはありませんか?
そんなときに便利なのが三項演算子(条件式)です。三項演算子を使うと、if-else文を1行でスッキリ書くことができます。この記事では、三項演算子の基本構文から、ネストのさせ方、リスト内包表記やf文字列と組み合わせる実用テクニック、そして使うときの注意点までを、初心者の方にも分かりやすく丁寧に解説していきます。
コンテンツ
三項演算子(条件式)とは?
三項演算子とは、条件によって2つの値のうちどちらかを返す書き方のことです。Pythonの公式ドキュメントでは「条件式(conditional expression)」と呼ばれています。多くのプログラミング言語には 条件 ? 値1 : 値2 という記号を使った三項演算子がありますが、Pythonでは if と else という英単語を使って書くのが特徴です。読み下すように自然に書けるので、慣れるととても便利ですよ。
三項演算子の基本の書き方
Pythonの三項演算子は、次のような構文で書きます。「条件が真のときは値1を、そうでなければ値2を返す」という意味です。
# 三項演算子の基本構文
# 値1 if 条件 else 値2
score = 80
result = "合格" if score >= 60 else "不合格"
print(result)
# 実行結果: 合格左から「"合格"(条件が真のときの値)」「if score >= 60(条件)」「else "不合格"(条件が偽のときの値)」という順番です。英語の文章のように「合格、ただし60点以上ならね、そうでなければ不合格」と読むとイメージしやすいかもしれません。
if-else文との違いを比較してみよう
同じ処理を通常のif-else文で書いた場合と比べてみましょう。三項演算子を使うと、4行の処理が1行にまとまることが分かります。
score = 50
# 通常のif-else文(4行)
if score >= 60:
result = "合格"
else:
result = "不合格"
# 三項演算子(1行)
result = "合格" if score >= 60 else "不合格"
print(result)
# 実行結果: 不合格このように、「条件に応じて変数へ代入する値を切り替えるだけ」のシンプルな処理であれば、三項演算子のほうがコードが短く読みやすくなります。条件分岐そのものの基本をおさらいしたい方は、if文と演算子(not, in)の使い方を解説した記事もあわせて読んでみてください。
数値の大小を比較して使ってみる
三項演算子は、2つの数値のうち大きいほう(または小さいほう)を取り出すといった処理にも使えます。
a = 10
b = 25
big = a if a > b else b
print(big)
# 実行結果: 25a > b が偽(10は25より大きくない)なので、else 側の b が代入されます。組み込みの max() 関数でも同じことができますが、条件を自由に書けるのが三項演算子の強みです。
三項演算子をネストして使う(elif相当)
三項演算子は入れ子(ネスト)にすることもできます。これによって、if-elif-else のような3つ以上の分岐を1行で表現できます。
score = 75
grade = "A" if score >= 80 else "B" if score >= 60 else "C"
print(grade)
# 実行結果: B左から順に条件が判定され、最初に真になった値が返されます。ただし、ネストを深くしすぎるとかえって読みにくくなるので、2段までを目安にするのがおすすめです。
三項演算子の実用的な使い方
リスト内包表記と組み合わせる
三項演算子はリスト内包表記の中でもよく使われます。リストの各要素を条件によって変換したいときにとても便利です。
nums = [1, 2, 3, 4, 5]
labels = ["偶数" if n % 2 == 0 else "奇数" for n in nums]
print(labels)
# 実行結果: ['奇数', '偶数', '奇数', '偶数', '奇数']リスト内包表記そのものの書き方を詳しく知りたい方は、リスト内包表記の使い方を解説した記事を参考にしてください。内包表記と三項演算子を組み合わせられるようになると、データ処理のコードがぐっと短く書けるようになりますよ。
f文字列の中で使う
三項演算子はf文字列(f-string)の波括弧の中でも使えます。表示するメッセージを条件によって切り替えたいときに役立ちます。
count = 0
msg = f"通知が{count}件{'あります' if count > 0 else 'ありません'}"
print(msg)
# 実行結果: 通知が0件ありませんf文字列の中で三項演算子を使うときは、内側の文字列のクォートと外側のクォートが衝突しないように注意しましょう。f文字列の基本的な使い方については、f文字列(f-string)の使い方を徹底解説した記事で詳しく紹介しています。
三項演算子を使うときの注意点
便利な三項演算子ですが、使いどころを間違えるとかえってコードが読みにくくなります。次の点に気をつけましょう。
- 複雑な処理には使わない:条件や値が長くなる場合は、素直に通常の
if-else文で書いたほうが読みやすくなります。 - ネストは深くしすぎない:三項演算子を何段も重ねると、どこで何を判定しているのか分かりにくくなります。
- あくまで「値を返す」ための構文:三項演算子は値を返す式なので、ループや関数呼び出しなどの「処理」を分岐させたい場合は通常の
if文を使いましょう。
もっと効率的にPythonを学びたい人へ
三項演算子のような細かい文法は、実際に手を動かしてコードを書きながら覚えるのが一番の近道です。とはいえ、独学だと「この書き方で合っているのかな?」「エラーの原因が分からない…」と手が止まってしまうこともありますよね。
もし本気でPythonを身につけて、未経験からエンジニア転職まで目指したいなら、マンツーマン指導が受けられるプログラミングスクールを活用するのも一つの手です。プロの講師に直接質問できる環境があると、つまずきをすぐに解消できて学習効率が大きく上がります。無料カウンセリングを実施しているスクールも多いので、まずは話を聞いてみて、自分に合うか確かめてみるとよいでしょう。
※本記事には広告(アフィリエイトリンク)を含みます。
Pythonプログラミング|マンツーマンレッスンで初めてをプロに育てる【Python Winner】![]()
まとめ
今回は、Pythonの三項演算子(条件式)について解説しました。最後に要点を振り返っておきましょう。
- 三項演算子は
値1 if 条件 else 値2の形で書き、if-else文を1行にまとめられる。 - 数値の大小比較や、条件によって変数の値を出し分ける処理に便利。
- ネストすれば
elif相当の3分岐も書けるが、深くしすぎないこと。 - リスト内包表記やf文字列の中でも活用でき、コードを短くスッキリ書ける。
- 複雑な処理には無理に使わず、通常の
if文と使い分けるのがコツ。
三項演算子を使いこなせるようになると、Pythonのコードがぐっと洗練されます。ぜひ実際に手を動かして試してみてくださいね。
ナノトイラボ 