Ive最近对列表在内部的工作方式感到困惑。通过执行以下操作,此代码将跟踪这些列表中项目“ 1”的内存地址:
a = [1, 0, 2]
b = sorted(a)
c = b[:]
print id(a[0])
print id(b[1]) # Same memory address
print id(c[1]) # Same memory address
该地址在三个列表中保持不变。所有列表如何包含相同的项目“ 1”?
在内部(CPython)列表对象存储对其包含的Python对象的引用。因此,将一个列表的内容添加到另一个列表将不会创建新对象。它只会增加参考计数。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句