同一性判定
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この例では、a と b は同じリストオブジェクトを参照しているため、a is b は True を返します。しかし、a と c は同じ値を持つ異なるリストオブジェクトであるため、a is c は False を返します。
is not の基本的な使い方:
x = 5
y = 5
z = 10
print(x is not y) # 出力: False
print(x is not z) # 出力: Trueここでは、x と y は(Pythonの小さい整数に対する最適化により)同じ整数オブジェクトを参照しているため、x is not y は False を返します。x と z は異なるオブジェクトであるため、x is not z は True を返します。
同一性チェックは、2つの変数が単に同じ値を持っているかどうかではなく、メモリ内の同じオブジェクトを指しているかどうかを判定したい場合に特に有用です。
チャレンジ
簡単2つの変数、list1とlist2を作成します。ここで:
list1はリスト[1, 2, 3]を参照します。list2は同じオブジェクトに代入されます。
is演算子を使用して、list1とlist2が同じオブジェクトを参照しているかどうかを確認します。is not演算子を使用して、list1とlist2が異なるオブジェクトを参照しているかどうかを確認します。
チェックの結果を出力します。
チートシート
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つの変数が単に同じ値を持っているかどうかではなく、メモリ内の同じオブジェクトを指しているかどうかを判断します。
自分で試してみよう
# ここにコードを記述しますこのレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。