如何在Python中区分具有相同元素的两个列表?

时间:2012-07-13 06:25:51

标签: python

假设我们有两个列表:

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是两个具有相同元素的不同列表对象。 我们如何区分彼此?

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:5)

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