假设我们有两个列表:
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 个不同的列表对象。我们如何区分一个和另一个?
假设我们有两个列表:
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
andb
是不同的对象,将它们与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) 给出对象在内存中的地址,因为它们是两个不同的对象,因此具有不同的内存地址。