2 つのリストがあるとします。
a = [1, 2, 3]
b = [1, 2, 3]
次の式はすべて True を返します。
a == b # True
a == list(b) # True
a == list(tuple(b)) # True
a == copy.deepcopy(b) # still True
a
とb
は、同じ要素を持つ 2 つの異なるリスト オブジェクトです。どのようにお互いを区別するのでしょうか?
2 つのリストがあるとします。
a = [1, 2, 3]
b = [1, 2, 3]
次の式はすべて True を返します。
a == b # True
a == list(b) # True
a == list(tuple(b)) # True
a == copy.deepcopy(b) # still True
a
とb
は、同じ要素を持つ 2 つの異なるリスト オブジェクトです。どのようにお互いを区別するのでしょうか?
is
アイデンティティを比較します。a
とb
同じオブジェクトを求めます
>>> a=[1, 2, 3]
>>> b=list(a)
>>> id(a)
3065460108L
>>> id(b)
3073003244L
>>> id(a) == id(b) # Equivalent to a is b
False
>>> a is b
False
リストは ( を使用して==
) 要素ごとに比較され、整数はその値と比較されます。とにかく、a
とb
は異なるオブジェクトであり、それらを と比較するとis
が返されFalse
ます。
>>> a = [1, 2, 3]
>>> b = [1, 2, 3]
>>> a is b
False
a = [1, 2, 3]
b = [1, 2, 3]
print(id(a) == id(b))
これを試して 。id(objectName) は、メモリ内のオブジェクトのアドレスを提供します。これらは 2 つの異なるオブジェクトであるため、メモリ アドレスが異なります。