num = [1,2,3,4]
num == list(num)
它提供 True ,其中为,
num is list(num)
给出错误。
这两者有什么区别? python在两个语句中做了什么?
答案 0 :(得分:3)
==
为两个列表调用list.__eq__
,用于比较内容。 is
比较对象引用。 is
返回True
表示两个名称都指向内存中的同一个对象。
结果告诉您,即使输入是另一个列表,list
总是也会生成浅层副本。原因是list
是一种可变类型。你希望能够修改一个列表而不修改另一个列表,否则为什么还要打扰构造函数?
tuple
不会发生同样的行为,这是不可变的。 tuple(some_tuple) is some_tuple
将为True
。
答案 1 :(得分:1)
list()
创建一个新列表。新创建的列表与原始列表相等(==
)但不相同(is
)。