-1

假设我们有两个列表:

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

列表逐个元素进行比较(使用==),并且将整数与其值进行比较。无论如何,aandb是不同的对象,将它们与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) 给出对象在内存中的地址,因为它们是两个不同的对象,因此具有不同的内存地址。

于 2012-07-13T06:30:46.277 回答