为什么'list is list(list)'在python中为false?

时间:2017-12-28 07:56:12

标签: python python-3.x list identity

num = [1,2,3,4]
num == list(num) 

它提供 True ,其中为,

num is list(num)

给出错误

这两者有什么区别? python在两个语句中做了什么?

2 个答案:

答案 0 :(得分:3)

==为两个列表调用list.__eq__,用于比较内容。 is比较对象引用。 is返回True表示两个名称都指向内存中的同一个对象。

结果告诉您,即使输入是另一个列表,list 总是也会生成浅层副本。原因是list是一种可变类型。你希望能够修改一个列表而不修改另一个列表,否则为什么还要打扰构造函数?

tuple不会发生同样的行为,这是不可变的。 tuple(some_tuple) is some_tuple将为True

答案 1 :(得分:1)

list()创建一个新列表。新创建的列表与原始列表相等(==)但不相同(is)。