MENU

【Python】三項演算子の使い方を解説【if-else文を1行で書ける】

Pythonプログラミングを学ぶ上で、三項演算子は非常に便利な機能の一つです。

しかし、初心者にとっては少し難しい概念かもしれません。

この記事では、三項演算子の使い方を具体的なサンプルコードを交えながらわかりやすく詳しく解説します。

目次から探す

Pythonの三項演算子とは

Pythonの三項演算子は、条件式を使って簡潔に値を決定する方法です。

これにより、短いコードで条件に応じた値を返すことができます。

三項演算子は、他のプログラミング言語でもよく使われる機能であり、Pythonでも同様に便利に使えます。

三項演算子の概要

Pythonの三項演算子は、以下のような構文で表現されます。

値1 if 条件式 else 値2

この構文では、条件式Trueの場合、値1が返され、Falseの場合、値2が返されます。

例えば、以下のようなコードで、三項演算子を使って最小値を求めることができます。

a = 3
b = 5
min_value = a if a < b else b
print(min_value)  # 結果: 3

このコードでは、abより小さい場合、min_valueaが代入され、そうでない場合、bが代入されます。

他のプログラミング言語との比較

他のプログラミング言語でも、三項演算子はよく使われます。

例えば、C言語やJavaでは、以下のような構文で三項演算子を使うことができます。

条件式 ? 値1 : 値2

この構文は、Pythonの三項演算子と同様に、条件式がTrueの場合に値1を返し、Falseの場合に値2を返します。

他言語では三項演算子特有の独特な記法が採用されてますが、Pythonの三項演算子は、より自然な言語に近い構文で表現されているため、初心者にとっても理解しやすいと言えます。

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

Pythonの三項演算子は、条件式を評価し、その結果に応じて2つの異なる値のうちどちらかを返すことができる便利な機能です。

このセクションでは、三項演算子の基本的な使い方を学びます。

条件式の書き方

三項演算子の条件式は、以下のように書きます。

真の場合の値 if 条件式 else 偽の場合の値

まず、ifの前に真の場合に返す値を書きます。

次に、ifの後に条件式を書きます。

最後に、elseの後に偽の場合に返す値を書きます。

例えば、以下のコードでは、xが10より大きいかどうかを判定し、真の場合は"大きい"、偽の場合は"小さい"という文字列を返します。

x = 15
result = "大きい" if x > 10 else "小さい"
print(result)  # 実行結果: 大きい

真の場合の処理

条件式が真の場合、つまりifの後の条件式が成立する場合、三項演算子はifの前に書かれた値を返します。

例えば、以下のコードでは、xが偶数かどうかを判定し、真の場合は"偶数"という文字列を返します。

x = 6
result = "偶数" if x % 2 == 0 else "奇数"
print(result)  # 実行結果: 偶数

偽の場合の処理

条件式が偽の場合、つまりifの後の条件式が成立しない場合、三項演算子はelseの後に書かれた値を返します。

例えば、以下のコードでは、xが正の数かどうかを判定し、偽の場合は"負の数"という文字列を返します。

x = -3
result = "正の数" if x > 0 else "負の数"
print(result)  # 実行結果: 負の数

これが、三項演算子の基本的な使い方です。

三項演算子の応用例

ここでは、Pythonの三項演算子をより実践的な使い方を紹介します。

具体的には、リスト内包表記、辞書内包表記、関数の引数での使用方法を解説します。

リスト内包表記での使用

リスト内包表記は、リストを簡潔に生成するための構文です。

三項演算子を使って、条件に応じた値を持つリストを簡単に作成することができます。

例えば、1から10までの数値のリストを作成し、偶数の場合はそのままの値を、奇数の場合は-1倍した値を持つリストを作成する場合、以下のように書くことができます。

numbers = [i if i % 2 == 0 else -i for i in range(1, 11)]
print(numbers)
[-1, 2, -3, 4, -5, 6, -7, 8, -9, 10]

このコードでは、i % 2 == 0という条件式を使って偶数かどうかを判断し、偶数の場合はiを、奇数の場合は-iをリストに追加しています。

リスト内包表記は慣れるまでは独特な書き方に違和感があるかもしれませんが、慣れると複雑な処理を簡潔に書ける為、覚えておいて損はありません。

辞書内包表記での使用

辞書内包表記は、リスト内包表記と同様に、辞書を簡潔に生成するための構文です。

三項演算子を使って、条件に応じたキーと値を持つ辞書を簡単に作成することができます。

例えば、1から5までの数値をキーとし、その値が偶数の場合は’even’、奇数の場合は’odd’という値を持つ辞書を作成する場合、以下のように書くことができます。

number_dict = {i: 'even' if i % 2 == 0 else 'odd' for i in range(1, 6)}
print(number_dict)
{1: 'odd', 2: 'even', 3: 'odd', 4: 'even', 5: 'odd'}

このコードでは、i % 2 == 0という条件式を使って偶数かどうかを判断し、偶数の場合は'even'を、奇数の場合は'odd'を辞書の値として追加しています。

関数の引数での使用

三項演算子は、関数の引数に渡す値を条件に応じて変更する場合にも使えます。

これにより、コードを簡潔にし、可読性を向上させることができます。

例えば、与えられた数値が正の場合はそのままの値を、負の場合は0を返す関数positive_or_zeroを定義する場合、以下のように書くことができます。

def positive_or_zero(x):
    return x if x > 0 else 0

number = -5
result = positive_or_zero(number)
print(result)
0

このコードでは、x > 0という条件式を使って正の数かどうかを判断し、正の場合はxを、負の場合は0を返しています。

過度に使用すると逆に可読性が落ちるので、パッと見て何やってるのか全然わからない場合は、通常のif-else文で書きましょう。

1 2 3
目次から探す