为什么python中的列表比较值比较而不是参考比较?

时间:2019-11-21 09:29:12

标签: python python-3.x list

我创建了2个列表,一个列表理解列表,另一个使用迭代列表。第二个列表从一个空列表开始,因此它在内存中必须具有不同的位置。因此,==应该返回False,但是它返回True。 请注意,内存位置不同(第二次打印调用):

my_list = [x*2 for x in range(1, 10, 1)]
new_list = []
for item in range(1, 10, 1):
    new_list.append(item * 2)

print(my_list == new_list) # True 
print(hex(id(my_list)) == hex(id(new_list))) #False

请解释为什么会这样?

1 个答案:

答案 0 :(得分:2)

仅仅因为这些是Python与==运算符进行列表比较的语义。

如果您确实要进行参考比较,请使用is运算符-通常,您永远都不想进行参考比较。