Menu
Coddy logo textTech

同一性判定

CoddyのPythonジャーニー「Logic & Flow」セクションの一部 — レッスン 26/78。

Pythonでは、isおよびis not演算子は、オブジェクトの同一性をチェックするために使用されます。2つの変数が同じ値を持っているかどうかをチェックする==演算子とは異なり、is演算子は、2つの変数がメモリ内のまったく同じオブジェクトを参照しているかどうかをチェックします。

is の基本的な使い方:

a = [1, 2, 3]
b = a
c = [1, 2, 3]

print(a is b)  # 出力: True
print(a is c)  # 出力: False

この例では、ab は同じリストオブジェクトを参照しているため、a is bTrue を返します。しかし、ac は同じ値を持つ異なるリストオブジェクトであるため、a is cFalse を返します。

is not の基本的な使い方:

x = 5
y = 5
z = 10

print(x is not y)  # 出力: False
print(x is not z)  # 出力: True

ここでは、xy は(Pythonの小さい整数に対する最適化により)同じ整数オブジェクトを参照しているため、x is not yFalse を返します。xz は異なるオブジェクトであるため、x is not zTrue を返します。

同一性チェックは、2つの変数が単に同じ値を持っているかどうかではなく、メモリ内の同じオブジェクトを指しているかどうかを判定したい場合に特に有用です。

challenge icon

チャレンジ

簡単

2つの変数、list1list2を作成します。ここで:

  • list1はリスト[1, 2, 3]を参照します。
  • list2は同じオブジェクトに代入されます。

is演算子を使用して、list1list2が同じオブジェクトを参照しているかどうかを確認します。
is not演算子を使用して、list1list2が異なるオブジェクトを参照しているかどうかを確認します。
チェックの結果を出力します。

チートシート

is および is not 演算子は、== のような値の等価性だけでなく、メモリ内でのオブジェクトの同一性をチェックします。

変数が同じオブジェクトを参照しているかどうかを is を使用してチェックする:

a = [1, 2, 3]
b = a
c = [1, 2, 3]

print(a is b)  # 出力: True
print(a is c)  # 出力: False

変数が異なるオブジェクトを参照しているかどうかを is not を使用してチェックする:

x = 5
y = 5
z = 10

print(x is not y)  # 出力: False
print(x is not z)  # 出力: True

同一性チェックは、2つの変数が単に同じ値を持っているかどうかではなく、メモリ内の同じオブジェクトを指しているかどうかを判断します。

自分で試してみよう

# ここにコードを記述します
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

Logic & Flowのすべてのレッスン