列表的Python内存管理()

我正在创建一个元组,然后将其转换为包含以下代码的列表:

y=("hello","the","world")
y=list(y)

python是否只是将对象标记为现在可变并可通过标签y访问,或者它是否创建了每个对象的完整副本,将它们添加到新的列表结构中,然后删除原始的不可变对象?

干杯

在执行该行期间

y = list(y)

发生以下情况:

>评估右侧.这包括创建新的列表对象.列表对象用传递给构造函数的元组对象的项填充.这些项目不会被复制.而是增加了它们的引用计数,并且对这些项的引用被添加到新的列表对象中.

>新创建的列表对象分配给左侧的名称(y).这包括首先取消分配名称,这导致减少之前指向的元组对象的引用计数器.由于没有对此元组对象的更多引用,因此将其删除.最后,y设置为指向新的列表对象.

翻译自:https://stackoverflow.com/questions/5731878/python-memory-management-for-list