您的位置:首页 > 编程语言 > Python开发

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: