为什么python中的列表比较会进行值比较而不是引用比较?

为什么python中的列表比较会进行值比较而不是引用比较?,python,python-3.x,list,Python,Python 3.x,List,我已经创建了两个列表,一个列出理解,另一个使用迭代。第二个列表以空列表开始,因此它在内存中必须有不同的位置。因此,=应该返回False,但它返回True。 请注意,内存位置不同(第二次打印调用): 请解释为什么会这样?原因很简单,因为这些是Python与=操作符进行列表比较的语义 如果您确实想要引用比较,请使用is运算符–通常,您永远不会想要引用比较。尝试l1=[1,2,3]l2=[1,2,3]打印(l1==l2)这就是=用于:值比较的功能。如果要进行引用比较,请使用is运算符。请注意,最后一行

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


请解释为什么会这样?

原因很简单,因为这些是Python与
=
操作符进行列表比较的语义


如果您确实想要引用比较,请使用
is
运算符–通常,您永远不会想要引用比较。

尝试
l1=[1,2,3]l2=[1,2,3]打印(l1==l2)
这就是
=
用于:值比较的功能。如果要进行引用比较,请使用
is
运算符。请注意,最后一行可以是
打印(我的列表是新列表)
=
测试是否相等,
is
测试是否引用了相同的对象。我是Python新手。在我以前的经验中,==用于参考比较,是用于值比较的自定义实现。谢谢大家的澄清。非常感谢:-)你也可以在官方网站上找到
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