Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonの三項演算子とは?基本構文から実装方法まで徹底解説

多くのプログラミング言語では、三項演算子(条件演算子)がサポートされており、これを使うことで条件式を簡潔に記述できます。

Pythonの三項演算子も同様に、二値の条件の評価結果に基づいて値を返すために使用されます。条件(真偽値)を入力として受け取るため「if-else」文とよく似ていますが、同時に値を返すという点で、関数のような振る舞いをするのも特徴です。

基本構文

[on_true] if [expression] else [on_false]

それでは、2つの整数を比較する簡単なプログラムを書いてみましょう。

a. Pythonのif-else文を使用した場合:

>>> x, y = 5, 6
>>> if x>y:
   print("x")
else:
   print("y")
y

b. 三項演算子を使用した場合:

>>> x, y = 5, 6
>>> print("x" if x> y else "y")
y

三項演算子を使えば、同じ処理を1行で書くことができます。Pythonではまず条件を評価し、真であれば最初の式を、偽であれば2番目の式を評価します。

>>> def find_max(a,b):
return a if (a>b) else b
>>> find_max(5, 6)
6

三項演算子を実装するさまざまな方法

以下に、三項演算子を実現する代表的な方法をいくつか紹介します。

a. Pythonのタプルを使用する方法

>>> a, b = random(), random()
>>> (b, a) [a>b]
0.5497848117028667

上記のコードは、以下のように書いた場合と同等です。

>>> (b, a) [True]
0.5065247098746795

ただし、この書き方だと返される値が「a」なのか「b」なのか分かりにくいことがあります。そのような場合は、次のようにf文字列を使ってコードを書き直すと理解しやすくなります。

>>> (f"b:{b}", f"a:{a}") [a>b]
'b:0.5497848117028667'

b. Pythonの辞書を使用する方法

>>> a, b = random(), random()
>>> {False: f"b:{b}", True: f"a:{a}"}[a>b]
'a:0.8089581560973976'

キーと値のペアは入れ替えて記述することも可能です。

>>> {True: f"a:{a}", False: f"b:{b}"}[a>b]
'a:0.8089581560973976'

c. ラムダ式を使用する方法

Pythonのラムダ関数を組み合わせれば、三項演算子のように動作させることができます。

>>> (lambda: f"a:{a}", lambda: f"b:{b}")[a>b]()
'b:0.6780078581465793'

ネストされたPythonの三項演算子

三項演算子は連鎖させる(ネストさせる)こともできます。複数の条件を順番に評価したい場合に便利ですが、読みにくくなりやすいので注意が必要です。

>>> from random import random
>>> x = random()
>>> "Less than zero" if x<0 else "between 0 and 5" if a>=0 and a<=5 else "Greather than five"

出力結果

'between 0 and 5'

xの実際の値を確認してみましょう。

>>> x
0.08009251123993566

xが0以上かつ5以下であるため、「between 0 and 5」という文字列が返されました。このように、三項演算子をネストすることで複雑な条件分岐も1行で表現できますが、可読性を保つためには通常のif-elif-else文との使い分けを検討するとよいでしょう。

  1. Pythonの演算子の種類をわかりやすく解説!7つの基本カテゴリ一覧

    Pythonの演算子とは?演算子(Operator)とは、オペランド(被演算子)の値を操作・処理するための記号やキーワードのことです。例として「4 + 5 = 9」という式を見てみましょう。この場合、4と5が「オペランド(被演算子)」と呼ばれ、+が「演算子」と呼ばれます。Python言語では、目的に応じて複数の種類の演算子が用意されており、これらを使いこなすことが効率的なプログラミングの第一歩となります。Pythonでサポートされている7種類の演算子Pythonでは、主に以下の7種類の演算子がサポートされています。1. 算術演算子(Arithmetic Operators)足し算(+)、引き算

  2. Pythonのオブジェクト比較を徹底解説:「is」と「==」演算子の違い

    本記事では、Pythonにおけるオブジェクト比較の方法として、「is」演算子と等価演算子「==」の違いについて詳しく解説します。 この2つの演算子は似ているようで、実はまったく異なる役割を持っています。それぞれの動作の仕組みを正しく理解することは、バグの少ないPythonコードを書く上で非常に重要です。 「==」と「is」の基本的な違い 等価演算子(==)は、渡されたオブジェクトの値が等しいかどうかを判定します。つまり、2つのオブジェクトがメモリ上のどこに格納されていようと、中身の内容が同じであれば「等しい」とみなされます。 一方、is 演算子は、2つのオブジェクトが同一の参照(同じメモリ上の