假设我们有两个列表:
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
是两个具有相同元素的不同列表对象。
我们如何区分彼此?
答案 0 :(得分:6)
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
答案 1 :(得分:5)
逐个元素地比较列表(使用==
),并将整数与它们的值进行比较。无论如何,a
和b
是不同的对象,将它们与is
进行比较将返回False
。
>>> a = [1, 2, 3]
>>> b = [1, 2, 3]
>>> a is b
False
答案 2 :(得分:2)
a = [1, 2, 3]
b = [1, 2, 3]
print(id(a) == id(b))
试试这个。 id(objectName)给出了内存中对象的地址,因为它们是两个不同的对象,因此具有不同的内存地址。