如果我正确理解它,用Python:
请考虑Python 3中的以下代码:
list1 = [1, 2, 3]
list2 = list1
list1.extend(list(range(10000000)))
通过使用10000000,我希望这将导致list1的底层动态数组被重新定位到内存中。重新定位之后,list1
和list2
是否仍然指向内存上的相同位置?(我认为是因为print(len(list2))
给了我10000003英镑。)如果是这样的话,Python是如何做到的?它是否跟踪指向每个对象的变量数量?
发布于 2020-11-01 16:39:36
在编写list2 = list1时,您引用了list1,没有复制它的值。除非您复制了list1,否则python将您的作业作为对list1的引用,以保持计算机的内存整洁。如果需要,可以将第一个列表复制为下面的示例:
list1 = [1, 2, 3]
list2 = list1[:]
现在,您可以单独处理列表。
https://stackoverflow.com/questions/64629619
复制相似问题