我创建了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
请解释为什么会这样?
答案 0 :(得分:2)
仅仅因为这些是Python与==
运算符进行列表比较的语义。
如果您确实要进行参考比较,请使用is
运算符-通常,您永远都不想进行参考比较。