我正在创建一个元组,然后使用以下代码将其转换为列表:
y=("hello","the","world")
y=list(y)
python 是简单地通过标签 y 将对象标记为现在可变和可达,还是创建每个对象的完整副本,将这些添加到新的列表结构中,然后删除原来的不可变对象(immutable对象)?
干杯
最佳答案
在行的执行过程中
y = list(y)
发生以下情况:
右侧得到评估。这包括创建一个新的列表对象。列表对象填充了传递给构造函数的元组对象的项目。这些项目不会被复制。相反,它们的引用计数会增加,并且对这些项目的引用会添加到新的列表对象中。
新创建的列表对象被分配给左侧的名称 (
y
)。这包括首先取消分配名称,这会导致之前指向的元组对象y
的引用计数器减少。由于不再有对该元组对象的引用,因此将其删除。最后,y
被设置为指向新的列表对象。
关于list() 的 Python 内存管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5731878/