PR

【Python】==<>(比較演算子)をわかりやすく3分で解説

Python

Pythonの比較演算子は、値やオブジェクト間の比較を行い、その結果をブール値(真偽値、TrueまたはFalse)として返すための特殊な記号です。

参考 Pythonとは?

わかりやすく説明すると、「このりんごはあのりんごより大きいか?」、「この試験の点数は平均点と同じか?」などの質問をプログラムが理解できるようにするための特殊な記号、それが比較演算子です。そして、それらの質問の答えは「はい」または「いいえ」、つまりプログラムの世界では「True」または「False」で返されるということです。

このページではPythonの比較演算子の基本をサンプルコード付きで初心者向けにわかりやすく解説します。

このページで学べる内容
  • 比較演算子の使い方
  • 比較演算子の注意点

Pythonエンジニアを目指す方であれば知らないと恥ずかしい超・基本知識の1つです。是非最後までご覧ください。

参考 Pythonの基本文法

スポンサーリンク

Python:比較演算子とは?

比較演算子とは、二つの値やオブジェクトを比較し、その結果をブール値(True または False)で返すための特殊な記号です。

Pythonの比較演算子の一覧を表形式でまとめます。

演算子説明結果
==等しい5 == 5True
!=等しくない5 != 3True
>より大きい5 > 3True
<より小さい3 < 5True
>=より大きいか等しい5 >= 5True
<=より小さいか等しい5 <= 5True
is同一オブジェクトであるa is aTrue
is not同一オブジェクトでないa is not bTrue

この表の「例」欄では、すべての演算子が True を返す状況を示しています。ただし、これらの演算子はそれぞれの条件により False を返すこともあります。

上から順にサンプルコード付きで詳細を説明していきます。

Python:==

比較演算子 == は、二つの値が等しいかどうかを判定します。

# 変数の定義
num1 = 10
num2 = 20
num3 = 10

# == 演算子の利用
result1 = (num1 == num2)  # num1とnum2は等しくないため、Falseが返る
result2 = (num1 == num3)  # num1とnum3は等しいため、Trueが返る

# 結果の表示
print(f'num1とnum2は等しいか?: {result1}')  # 出力:num1とnum2は等しいか?: False
print(f'num1とnum3は等しいか?: {result2}')  # 出力:num1とnum3は等しいか?: True

参考 Pythonの変数の基本 / print関数

この例では、num1num2 が等しくないため、result1False となり、num1num3 が等しいため、result2True となります。

Python:!=

比較演算子 != は、二つの値が等しくないかどうかを判定します。

# 変数の定義
num1 = 10
num2 = 20
num3 = 10

# != 演算子の利用
result1 = (num1 != num2)  # num1とnum2は等しくないため、Trueが返る
result2 = (num1 != num3)  # num1とnum3は等しいため、Falseが返る

# 結果の表示
print(f'num1とnum2は等しくないか?: {result1}')  # 出力:num1とnum2は等しくないか?: True
print(f'num1とnum3は等しくないか?: {result2}')  # 出力:num1とnum3は等しくないか?: False

この例では、num1num2 が等しくないため、result1True となり、num1num3 が等しいため、result2False となります。

Python:>

比較演算子 > は、左の値が右の値より大きいかどうかを判定します。

# 変数の定義
num1 = 10
num2 = 20

# > 演算子の利用
result = (num1 > num2)  # num1はnum2より小さいため、Falseが返る

# 結果の表示
print(f'num1はnum2より大きいか?: {result}')  # 出力:num1はnum2より大きいか?: False

この例では、num1num2 より小さいため、resultFalse となります。

Python:<

比較演算子 < は、左の値が右の値より小さいかどうかを判定します。

# 変数の定義
num1 = 10
num2 = 20

# < 演算子の利用
result = (num1 < num2)  # num1はnum2より小さいため、Trueが返る

# 結果の表示
print(f'num1はnum2より小さいか?: {result}')  # 出力:num1はnum2より小さいか?: True

この例では、num1num2 より小さいため、resultTrue となります。

Python:>=

>= : 左の値が右の値より大きいか、または等しいかを判定します。

# 変数の定義
num1 = 10
num2 = 10

# >= 演算子の利用
result = (num1 >= num2)  # num1はnum2と等しいため、Trueが返る

# 結果の表示
print(f'num1はnum2以上か?: {result}')  # 出力:num1はnum2以上か?: True

Python:<=

<= : 左の値が右の値より小さいか、または等しいかを判定します。

# 変数の定義
num1 = 10
num2 = 20

# <= 演算子の利用
result = (num1 <= num2)  # num1はnum2より小さいため、Trueが返る

# 結果の表示
print(f'num1はnum2以下か?: {result}')  # 出力:num1はnum2以下か?: True

Python:is

Pythonの is 演算子は、2つのオブジェクトが同一(つまり、メモリ上の同じ位置に存在する)かどうかを判定します。

これは、オブジェクトの値が等しいかどうか(== 演算子が行うこと)とは異なる点に注意が必要です。

例えば、以下のコードを見てみましょう。

# リストの定義
list1 = [1, 2, 3]
list2 = list1  # list1の参照をlist2に代入
list3 = [1, 2, 3]  # 新しいリストを作成

# is 演算子と == 演算子の利用
print(list1 is list2)  # 出力:True
print(list1 == list2)  # 出力:True

print(list1 is list3)  # 出力:False
print(list1 == list3)  # 出力:True

参考 リストとは?Pythonデータ構造の基本

list1list2 は同一のオブジェクトを指しています。したがって、 list1 is list2True を返します。また、その値も等しいので list1 == list2True を返します。

一方、list1list3 は異なるオブジェクトを指しています(内容は同じでも、それぞれ異なるメモリ位置に存在します)。

したがって、 list1 is list3False を返します。しかし、その値は等しいので list1 == list3True を返します。

これらの違いを理解することは、Pythonにおけるオブジェクトの同一性と等価性を理解する上で重要です。特に、ミュータブル(=変更可能)なオブジェクト(リスト、辞書、セットなど)を扱う際には注意が必要です。

Python:is not

is not は先ほどの is の否定版。つまり、左のオブジェクトが右のオブジェクトと非同一(つまり、メモリ上の異なる位置にある)かどうかを判定します。

# 変数の定義
list1 = [1, 2, 3]
list2 = [1, 2, 3]  # 新しいリストを作成

# is not 演算子の利用
result = (list1 is not list2)  # list1とlist2は非同一オブジェクトなので、Trueが返る

# 結果の表示
print(f'list1はlist2と非同一オブジェクトか?: {result}')  # 出力:list1はlist2と非同一オブジェクトか?: True

isis not 演算子は、値の等しさではなく、オブジェクトの同一性を検査するという点を押さえておきましょう。

比較演算子の注意点

比較演算子を使用する際には以下の点に注意する必要があります。

比較演算子利用時の注意点
  • 1:データ型の違い
  • 2:浮動小数点数の比較
  • 3:NaNの比較
  • 4:オブジェクト同一性の比較:

注意点1:データ型の違い

Pythonでは異なるデータ型の値を比較することができますが、必ずしも期待通りの結果にならないことがあります。

例えば、整数の 5 と文字列の "5" を比較すると、これらは等しくないと判断されます(つまり、5 == "5"False を返します)。

比較を行う前に、必要に応じて適切なデータ型に変換することが重要です。

num = 5
str_num = "5"
print(num == str_num)  # 出力:False
print(num == int(str_num))  # 出力:True

参考 データ型とは?

注意点2:浮動小数点数の比較

浮動小数点数(=小数)の比較は、計算機の精度上の問題から予想外の結果をもたらすことがあります。

例えば、0.1 + 0.2 == 0.3False を返します。これは、多くのシステムで浮動小数点数が2進数で内部的に表現され、そのために丸め誤差が生じるためです。この問題を避けるためには、一定の許容誤差内で等しいと判断するなどのアプローチがあります。

print(0.1 + 0.2 == 0.3)  # 出力:False
epsilon = 1e-10
print(abs((0.1 + 0.2) - 0.3) < epsilon)  # 出力:True

注意点3:NaNの比較

NaNは "Not a Number" の略で、数学的に定義できない数値計算の結果を表すために使用されます。

たとえば、0での除算や負の数の平方根などがNaNを生成します。

Pythonでは、浮動小数点数のNaNは float('nan') で生成できます。しかし、NaNは一般的な値とは異なり、自分自身と等しくないという特性があります。つまり、nan == nanFalse を返します。これはNaNが数学的に未定義の結果を表現しているため、その値が何であるかを正確に定義することはできません。

# NaNの生成
nan = float('nan')

# 自分自身との比較
print(nan == nan)  # 出力:False

# math.isnan関数を使用したNaNのチェック
import math
print(math.isnan(nan))  # 出力:True

上記のコードでは、nan == nanFalse を返すことを確認できます。そのため、NaNの存在を確認するためには math.isnan 関数を使用します。これは、値がNaNであるかどうかをチェックし、その結果を真偽値で返します。

注意点4:オブジェクト同一性の比較

is演算子の所で説明した内容と重複しますが、重要な内容なので改めて説明します。

is 演算子と == 演算子は異なる意味を持ちます。is 演算子はオブジェクトの同一性を検査しますが、== 演算子は値の等価性を検査します。これらを混同しないように注意が必要です。

list1 = [1, 2, 3]
list2 = list1
list3 = [1, 2, 3]
print(list1 == list2)  # 出力:True
print(list1 is list2)  # 出力:True
print(list1 == list3)  # 出力:True
print(list1 is list3)  # 出力:False

Pythonを1から学習したい方は

始めてPythonを勉強するのは結構難しいですよね。

でもその悩みを抱えているのは一人じゃありません。全てのPython使いが同じ道を進んできました。

Pythonをはじめとするプログラミングスキルを武器に、時間と場所に捉われない自由な生き方を目指してみませんか?今すぐ行動したい方は以下の記事をチェック!

読者料典 Python入門:学習カリキュラム ←こちらから!

このWebサイトは現役のエンジニアが以下3点を目的として運営しています。

  1. 勉強:一度理解した内容を忘れないように。
    → アウトプットは「最強のインプット」である! 
  2. 備忘:忘れたとしても後から見返せるように。
    → 未来の自分への「お手紙」を書いています。 
  3. 共有:〇〇ってこうだったんだ!の感動をシェアできるように。
    → あなたの知識は誰かにとっての「価値ある情報」です。 

副業ブログの始め方はこちらから

スポンサーリンク
Python
シェアする
ビズドットオンラインをフォローする
タイトルとURLをコピーしました