为什么 'list is list(list)' 在 python 中是错误的?

Why 'list is list(list)' is false in python?

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

它给出 True,其中,

num is list(num)

给出 错误

这两者有什么区别? python 在两个语句中的作用是什么?

list() 创建一个新列表。新创建的列表等于 (==) 与原始列表 (is).

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

结果告诉你的是 list 总是 进行浅拷贝,即使输入是另一个列表。原因是 list 是可变类型。您希望能够修改一个列表而不修改另一个列表,否则为什么还要调用构造函数呢?

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