かゆい所に手が届く解説

Pythonでコードを短縮・効率化する「三項演算子」の使い方とメリット

Pythonでコードを短縮・効率化する「三項演算子」の使い方とメリット

条件分岐のifやelseは使いますか?

とても便利ですが、とても簡単に記述する方法があることをご存じでしょうか。

この記事では、Pythonにおける「三項演算子」について実例と合わせて解説します。

また、三項演算子を使った方が良い例と使わない方が良い事例も紹介します。

なお、本記事と同じ内容で動画も公開しています。

条件分岐の基本

まずは、条件分岐の基本についておさらいしましょう。

条件分岐では、特定の条件に応じて異なるコードを実行することができますね。

if文を使った基本的な条件分岐と、真偽値や条件式の使い方についてはこちらの記事で解説しています。

以降の解説は条件分岐の基礎を理解している前提で進めます。

三項演算子とは

プログラミング初心者の方は、「三項演算子って何?」と思われるかもしれません。

三項演算子とは、コードを短縮してコンパクトに記述するための便利な構文です。

if文を簡潔に表現する方法として使われ、通常のif/elseと同じように「条件が真の場合と偽の場合で異なる値を返すこと」ができます。

三項演算子の基本的な使い方

三項演算子の基本的な文法は以下のようになります。

値1 if 条件式 else 値2

初めてこれを見ても良く分からないですよね。

例として、以下のようなif文を使った条件分岐を用意しました。

x = 10
if x > 0:
    result = "Positive"
else:
    result = "Non-positive"
print(result)

これは、xの値が0より大きい場合「positive」、そうでなければ「non-positive」を返してprint するものです。

これを三項演算子で記述すると以下のようになります。

x = 10
result = "Positive" if x > 0 else "Non-positive"
print(result)

結果は同じですが、よりコンパクトで簡潔に記述できています。

三項演算子の文法解説
図でまとめると上記のようになります

通常のif/elseの処理と見比べると分かりやすいですね。

三項演算子の実用例

①最大値の取得

以下のように、2つの値を比較して大きい方を取得する場合は三項演算子がおススメです。

a = 10
b = 15
max_value = a if a > b else b
print(max_value)

②判定結果の代入

以下のように、真偽値によって結果を返す際も三項演算子が分かりやすいですね。

is_even = True
message = "Even" if is_even else "Odd"
print(message)

三項演算子の注意点

三項演算子は非常に便利なツールです。

しかし、注意深く使用しないと可読性の低下やバグの発生などのリスクがあります。

注意点①:複雑な式は避ける

三項演算子は短くコードを記述する際に有用ですが、複雑な式を含む場合には逆に読みにくくなることがあります。

例えば、以下のようなコードは可読性が低くなる可能性があります。

result = "Even" if (x > 0 and y < 10) else "Odd"

一瞬、考えてしまいますね。

この場合は通常のifとelseで記述した方が良いでしょう。

注意点②:複数の操作を含む

三項演算子は1つの式の評価結果に基づいて2つの値のいずれかを返すためのものです。

しかし、複数の操作を行いたい場合にはif文を使う方が適切です。

例えば、以下のコードは三項演算子ではなくif文を使うべき事例です。

if condition:
    do_something()
    do_another_thing()
else:
    do_something_else()

注意点③:結果が3つ以上に分岐する場合

三項演算子は以下のように記述することで3通りの値を返すことができます。

値1 if 条件式X else 値2 if 条件式Y else 値3

この場合、分岐は以下のようになります。

  • 条件式XがTrueなら値1を返す
  • 条件式XがFalseで条件式YがTrueなら値2を返す
  • 条件式XがFalseで条件式YがFalseなら値3を返す

例として、通常のif/elseによる条件分岐を見てみましょう。

num = 2

if num == 1:
    print('1番')
elif num == 2:
    print('2番')
else:
    print('その他')

これを三項演算子で記述すると以下のようになります。

num = 2

print('1番' if num == 1 else '2番' if num == 2 else 'その他')

理解するまでに少し時間がかかりますね。

この場合、三項演算子は使わない方が分かりやすいと言えます。

三項演算子のメリットとデメリット

これまでの解説を踏まえ、メリットとデメリットをまとめましょう。

三項演算子を使用するメリットは以下の通りです。

  • 短縮したコード: if文を使わずに一行で条件分岐を行うことができます。これにより、コードが簡潔で読みやすくなります。
  • 一時変数の削減: 三項演算子を使用することで、一時変数を介さずに条件ごとの値を直接代入できます。
  • 行内で使用可能: 三項演算子は行内で使用できるため、コードの中で簡単に条件分岐を行うことができます。これにより、コードの見通しが良くなります。

便利そうな三項演算子ですが、必ずしもメリットばかりではありません。

使わない方が良い点として、

  • 複雑な式の可読性低下: 複雑な式を含む場合には、可読性が低下することがある。コードがわかりにくくなるため、適切な場面で使用する必要がある。
  • 複数の操作の組み合わせの難しさ: 複数の操作を含む場合には、if文の方が可読性が高くなることがある。複雑な処理を行う場合には注意が必要。
  • 結合優先順位の注意: 三項演算子を含む式を書く際には、結合優先順位に注意が必要。適切な括弧を使用しないと、意図しない結果が生じる可能性がある。

ということが挙げられます。

三項演算子とif文、どちらを使うべきか?

まとめると、

  • 基本的な条件分岐であれば三項演算子がコードを短くして読みやすくする
  • 複雑な条件や長い式を含む場合には、if文の方が可読性が高くなる

といえます。

適切な場面で適切なツールを選ぶことが大切ですね。

まとめ

この記事では、Pythonの三項演算子について詳しく解説しました。

条件分岐をスマートに行い、コードを短縮して効率的にプログラミングする方法としてご理解頂けたでしょうか?

今後もPythonを中心としたプログラミングの情報をお届けします。

Pythonの演習はこちら ▶

以下のメルマガにご登録頂くと、不定期に配信をお届けします。

ぜひ購読してください!

それでは、ステキなPythonライフを!

Pythonについて詳しく知りたいという方は、こちらの書籍もおススメです。

ABOUT ME
やまちゃん
これまで学生と社会人を合わせて5000人以上にプログラミング学習を指導。 ゼロからイチをわかりやすく解説する専門家として活動しており、本業ではArduinoを用いたIoT開発とロボットプログラミングが専門。 最近ではPythonを用いたアプリ開発、ウェブアプリケーションの開発と運営に没頭。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です