![]() |
1
2
Python中的变量总是对堆上的对象的引用(智能指针)。Python中没有像C中那样存在于堆栈上的对象的概念。在Python中为一个值指定一个新名称并不会复制它,它只是向对象添加了一个引用。
Python列表同样是这些引用的列表。将现有堆对象放入Python列表只会添加对它的引用。它不会复制它。这个
从这样的数组中获取一个值意味着将该值的副本作为堆对象,以便Python可以直接引用它。当然,您可以将数组作为一个整体进行新的引用,方法是将它赋给一个新变量或将它放入一个列表中。当然,这根本不是数组的拷贝。
熊猫的大多数操作都会复制,除非你使用
尝试 为了提高效率而使用视图,但与它所基于的Numpy数组一样,这并不总是可能的(例如当对象有多个数据类型时)。在不知道数据帧结构的情况下,我无法确定哪一个适用,甚至可能不知道,但我最好的猜测是,这将是一个浅拷贝。在简单的情况下很难预测,这可能取决于选择的内存布局,这是一个实现细节,可能会在不通知的情况下更改。别指望了。显式地使用copy方法。 |
![]() |
Naruto Biju Mode · 如何在java中正确执行深层和浅层拷贝 11 年前 |