list() 的 Python 内存管理

标签 python

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

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

python 是简单地通过标签 y 将对象标记为现在可变和可达,还是创建每个对象的完整副本,将这些添加到新的列表结构中,然后删除原来的不可变对象(immutable对象)?

干杯

最佳答案

在行的执行过程中

y = list(y)

发生以下情况:

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

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

关于list() 的 Python 内存管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5731878/

相关文章:

python - 使用正则表达式将捕获的单词替换为捕获的单词和引号

python - 我如何用 Perl 解析 C 头文件?

python - 属性错误 : 'datetime.datetime' object has no attribute 'timestamp'

python - 如何在 Python 中定义非 ISO 日期解析器?

python - 在函数中使用变量

python - PyCharm 远程调试

python - 如何在Python中使用networkx向圆形图中的节点添加标签

python - 将列表中的项目从前移到后

Python MySQLdb : Inserting duplicate entry into a table with UNIQUE fields

python - 运行程序的模块的名称