Python高级语法

深拷贝和浅拷贝

  1. 浅拷贝copy.copy():只拷贝数据的浅层变量,原变量(列表的深层变量)改变,拷贝的变量也跟着改变;
    Python高级语法

  2. 深拷贝copy.deepcopy():拷贝数据的浅层和深层变量,原变量(列表的深层变量)改变,拷贝的变量不会改变;
    Python高级语法

  3. 特殊:如果数据所有层都是元组的时候,那么它不会进行浅拷贝或者深拷贝,仅仅是指向,因为元组是不可变类型;若是深层可变类型数据(如浅层是元组,深层数据是列表(可修改)),则deepcopy()会进行深拷贝,递归的进行把可变的数据层进行拷贝。

  4. 列表的切片:如果一个变量等于一个列表(数据是有序的)的切片,则这个变量是浅拷贝。

  5. 根据需求确定使用哪种:
    拷贝的数据拿来用,不关心是否改变原始数据则可以用浅拷贝;
    拷贝的数据拿来用且希望不改变原始数据,就可以用深拷贝;