比較演算子の使い方

2 つの値が等しいかどうか、どちらかの値がもう片方の値よりも大きいかどうかなど 2 つの値を比較する時に使用するのが比較演算子です。比較演算子は結果として True または False を返します。ここでは比較演算子の使い方について解説します。

(Last modified: )

比較演算子の一覧

Python で用意されている比較演算子の一覧です。

x == y       x と y が等しい
X != y       x と y が等しくない
x > y        x は y よりも大きい
x < y        x は y よりも小さい
x >= y       x は y と等しいか大きい
x <= y       x は y と等しいか小さい
x in y       x という要素 が y に存在する
x not in y   x という要素 が y に存在しない

左辺と右辺のオブジェクトが等しいかどうか、また大きいか小さいかなどを比較します。結果としてブール値の True または False を返します。

等しいかどうかの比較

等しいかどうかの比較には == 演算子または != 演算子を使います。 == 演算子は左辺と右辺が等しければ True を返します。逆に != 演算子は左辺と右辺が異なる場合に True を返します。

数値の比較

数値を比較する場合は、整数と整数だけではなく整数と浮動小数点数が等しいかどうかを比較することができます。

print(bool(10 == 10))
>> True
print(bool(10 == 8))
>> False
print(bool(10 == 10.0))
>> True

整数の 10 と浮動小数点数の 10.0 を比較した場合、数値として等しい場合には True となります。

文字列の比較

文字列を比較する場合は、文字列の値が等しいかどうか比較します。大文字と小文字は区別されます。

print(bool("Hello" == "Hello"))
>> True
print(bool("Hello" == "Hey"))
>> False
print(bool("Hello" == "hello"))
>> False

タプルやリストの比較

タプルやリストの場合、1つ1つの要素が完全に一致している場合に True となります。

print(bool(["Red", "Blue"] == ["Red", "Blue"]))
>> True
print(bool(["Red", "Blue", "Yello"] == ["Red", "Blue"]))
>> False

整数の 10 と浮動小数点数の 10.0 を比較した場合、数値として等しい場合には True となります。

大きいか小さいかの比較

大きいか小さいかの比較には < 演算子, > 演算子, <= 演算子, >= 演算子を使います。 < 演算子 では左辺が右辺よりも小さい場合に True となり > 演算子はその逆です。また <= 演算子では左辺が右辺よりも等しいか小さい場合に True となり >= 演算子はその逆です。

数値の比較

数値を比較する場合は、数値の大小を比較します。なお複素数は大きいか小さいかの比較は行えません。

print(bool(5 > 3))
>> True
print(bool(7 < 3))
>> False
print(bool(4 >= 4))
>> True

文字列の比較

文字列を比較する場合は文字の Unicode のコードポイントで比較します。先頭の文字で比較し同じならば次の文字と比較していきます。文字に対する Unicode のコードポイントは組み込み関数の ord 関数で確認することができます。

print(ord("a"))
>> 97
print(ord("b"))
>> 98
print(ord("c"))
>> 99
print(ord("A"))
>> 65

"a" のコードポイントは 97 で "b" のコードポイントは 98 です。また "A" のコードポイントは 65 です。その為、 "a" と "b" で大きいかどうかを比較した場合には "b" の方が大きくなり、 "a" と "A" で大きいかどうかを比較した場合は "a" の方が大きくなります。

print(bool("apple" > "bread"))
>> False
print(bool("apple" > "Apple"))
>> True

例えば "abc" と "abcde" のような文字列の比較の場合は長い方の文字列が大きくなります。

print(bool("abc" < "abcde"))
>> True

タプルやリストの比較

タプルやリストで大きいか小さいかの比較を行う場合、最初の異なる要素で比較が行われます。例えば ["red", "blue", "green"] と ["red", "blue", "white"] の比較では 1 番目と 2 番目の要素は等しいので 3 番目の要素で大きいかどうかの比較が行われます。

print(bool(["red", "blue", "green"] > ["red", "blue", "white"]))
>> False

例えば ["aa", "bb"] と ["aa", "bb", "cc"] のような比較の場合は要素が多い方が大きくなります。

print(bool(["aa", "bb"] < ["aa", "bb", "cc"]))
>> True

要素が含まれるかどうか

指定した要素が含まれるかどうかを評価するには in 演算子を使います。 in 演算子は要素が含まれる場合に True となり、 not in 演算子は要素が含まれない場合に True となります。

例えば "apple" が ["orange", "apple", "lemon"] リストに含まれていれば True となります。

print(bool("apple" in ["orange", "apple", "lemon"]))
>> True
print(bool("grape" in ["orange", "apple", "lemon"]))
>> False

"apple" はリストに含まれているため True となり "grape" はリストに含まれていないので False となります。

異なるデータ型のオブジェクトの比較について

Python では異なるデータ型の比較はできる場合とできない場合があります。例えば整数と複素数の比較は等しいかどうかや大きいかどうかのどちらでも可能です。

print(bool (8 == 8.0))
>> True
print(bool (14 < 9.5))
>> False

ただ文字列と数値が等しいかどうかを比較すると常に False となります。文字列が数値の値を文字列であっても同じです。

print(bool (10 == "10"))
>> False

文字列と数値で大きいかどうかを比較しようとすると TypeError エラーとなります。

print(bool (10 > "8"))

>> Traceback (most recent call last):
>>   File "<stdin>", line 1, in <module>
>> TypeError: '>' not supported between instances of 'int' and 'str'

数値の値の文字列と数値で大きいかどうかを比較する場合は int 関数を使って文字列を数値に変換してから比較を行ってください。( int 関数については「int関数/float関数の使い方(文字列を数値に変換する)」を参照されてください)。

print(bool (14 > int("10")))
>> True

-- --

比較演算子の一覧と使い方について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。