python深浅拷贝

 

浅拷贝:拷贝了最外围的对象本身,内部的元素都只是拷贝了一个引用而已。也就是,把对象复制一遍,但是该对象中引用的其他对象我不复制.

浅拷贝
lst1 = ["美国","詹姆斯","科比"]
lst2 = lst1.copy()
lst2.append("保罗")
print(lst2,lst1)     #lst1和lst2 的,列表不同

 

深拷贝:外围和内部元素都进行了拷贝对象本身,而不是引用。也就是,把对象复制一遍,并且该对象中引用的其他对象我也复制,包含所有内容

import copy
lst1 =["詹姆斯","科比","保罗",["哈登","库里"]]
lst2 = copy.deepcopy(lst1)
lst2[3].append("球哥")
print(lst2)   #['詹姆斯', '科比', '保罗', ['哈登', '库里', '球哥']]
print(lst1)   #['詹姆斯', '科比', '保罗', ['哈登', '库里']]

 

 

几个术语的解释:

1,变量:是一个系统表的元素,拥有指向对象的连接空间 
2,对象:被分配的一块内存,存储其所代表的值 
3,引用:是自动形成的从变量到对象的指针 
4,注意:类型(int类型,long类型(python3已去除long类型,只剩下int类型的数据))属于对象,不是变量 
5,不可变对象:一旦创建就不可修改的对象,包括字符串、元组、数字 
6,可变对象:可以修改的对象,包括列表、字典。

 

应用的范围:

1,切片可以应用于:列表、元组、字符串,但不能应用于字典。 
2,深浅拷贝,既可应用序列(列表、元组、字符串),也可应用字典。

 

深浅拷贝的作用:

1,减少内存的使用 
2,以后在做数据的清洗、修改或者入库的时候,对原数据进行复制一份,以防数据修改之后,找不到原数据。

 

对于不可变对象的深浅拷贝:

不可变对象类型,没有被拷贝的说法,即便是用深拷贝,查看id的话也是一样的,如果对其重新赋值,也只是新创建一个对象,替换掉旧的而已。

一句话就是,不可变类型,不管是深拷贝还是浅拷贝,地址值和拷贝后的值都是一样的。

对于可变对象深浅拷贝:

 

=浅拷贝:值相等,地址相等 
copy浅拷贝:值相等,地址不相等 
deepcopy深拷贝:值相等,地址不相等

 

浅拷贝:拷贝了最外围的对象本身,内部的元素都只是拷贝了一个引用而已。也就是,把对象复制一遍,但是该对象中引用的其他对象我不复制.

浅拷贝
lst1 = ["美国","詹姆斯","科比"]
lst2 = lst1.copy()
lst2.append("保罗")
print(lst2,lst1)     #lst1和lst2 的,列表不同

 

深拷贝:外围和内部元素都进行了拷贝对象本身,而不是引用。也就是,把对象复制一遍,并且该对象中引用的其他对象我也复制,包含所有内容

import copy
lst1 =["詹姆斯","科比","保罗",["哈登","库里"]]
lst2 = copy.deepcopy(lst1)
lst2[3].append("球哥")
print(lst2)   #['詹姆斯', '科比', '保罗', ['哈登', '库里', '球哥']]
print(lst1)   #['詹姆斯', '科比', '保罗', ['哈登', '库里']]

 

 

几个术语的解释:

1,变量:是一个系统表的元素,拥有指向对象的连接空间 
2,对象:被分配的一块内存,存储其所代表的值 
3,引用:是自动形成的从变量到对象的指针 
4,注意:类型(int类型,long类型(python3已去除long类型,只剩下int类型的数据))属于对象,不是变量 
5,不可变对象:一旦创建就不可修改的对象,包括字符串、元组、数字 
6,可变对象:可以修改的对象,包括列表、字典。

 

应用的范围:

1,切片可以应用于:列表、元组、字符串,但不能应用于字典。 
2,深浅拷贝,既可应用序列(列表、元组、字符串),也可应用字典。

 

深浅拷贝的作用:

1,减少内存的使用 
2,以后在做数据的清洗、修改或者入库的时候,对原数据进行复制一份,以防数据修改之后,找不到原数据。

 

对于不可变对象的深浅拷贝:

不可变对象类型,没有被拷贝的说法,即便是用深拷贝,查看id的话也是一样的,如果对其重新赋值,也只是新创建一个对象,替换掉旧的而已。

一句话就是,不可变类型,不管是深拷贝还是浅拷贝,地址值和拷贝后的值都是一样的。

对于可变对象深浅拷贝:

 

=浅拷贝:值相等,地址相等 
copy浅拷贝:值相等,地址不相等 
deepcopy深拷贝:值相等,地址不相等

posted @ 2018-07-11 15:02  Hear7  阅读(64)  评论(0编辑  收藏  举报