为什么 '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
.
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
.