-1

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

abは、同じ要素を持つ 2 つの異なるリスト オブジェクトです。どのようにお互いを区別するのでしょうか?

4

3 に答える 3

6

isアイデンティティを比較します。ab同じオブジェクトを求めます

>>> 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
于 2012-07-13T06:30:30.550 に答える
5

リストは ( を使用して==) 要素ごとに比較され、整数はその値と比較されます。とにかく、abは異なるオブジェクトであり、それらを と比較するとisが返されFalseます。

>>> a = [1, 2, 3]
>>> b = [1, 2, 3]
>>> a is b
False
于 2012-07-13T06:26:57.467 に答える
2
a = [1, 2, 3]
b = [1, 2, 3]
print(id(a) == id(b))

これを試して 。id(objectName) は、メモリ内のオブジェクトのアドレスを提供します。これらは 2 つの異なるオブジェクトであるため、メモリ アドレスが異なります。

于 2012-07-13T06:30:46.277 に答える