Python中的深浅拷贝
2018-01-10 15:17
363 查看
浅拷贝
在Python语言中,所有的赋值都是在进行浅拷贝,应为在Python中变量都是引用类型的,也就是变量实际上存储的都是一个值在内存中所处的地址,并不是存储实际的值。而赋值也只是把这个值的地址值给另外一个变量,所以即使赋值了二个变量所指的值还是同一个值,只要修改了一个变量所指的值,那么另一个变量所对应的值也会相应的发生改变。示例:
list = [1,2,3,4] list1 = list # 只要赋值都是浅拷贝 print(id(list) == id(list1)) # 通过id()内置方法查看变量的存储的地址,打印出来的结果为True list[0] = 0 print[list1] # 列表list1打印的结果为[0,2,3,4],说明修改list的值的同时list1的值也发生了变化
深拷贝
深拷贝就是将一个变量所指的值复制一份出来,在内存空间中单独的开辟一块空间来存储它,在将它的内存地址返回,这样的过程叫做深拷贝,而不是像浅拷贝一样,二个变量都是指向同一块地址。如何使用深拷贝
使用深拷贝的前提要导入copy模块
import copy
在使用copy模块中的deepcopy()方法完成深拷贝
list = [1,2,3] list1 = copy.deepcopy(list) # 完成深拷贝
注:deepcopy同时支持多层拷贝,比如列表里面在嵌套列表,不管多深
另外一种单层的深拷贝种
同样是要导入copy模块
import copy
在使用copy模块中的copy()方法
list = [1,2,3] list1 = copy.copy(list) # 完成深拷贝
注:该深拷贝方法只支持一层深拷贝,如果要深拷贝多层请使用deepcopy
相关文章推荐