Python 学习日记第六篇 -- 深浅拷贝

简介:

深浅拷贝:

    1、字符串和数字

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import  copy
#浅拷贝
copy.copy()
#深拷贝
copy.deepcopy()
 
######################################################################################
a1 =  "string"
#a1 = 11
a2 = a1
a3 = copy.copy(a1)
a4 = copy.deepcopy(a1)
print( id (a1))
print( id (a2))
print( id (a3))
print( id (a4))
 
##########
result:
2719424
2719424
2719424
2719424

  由上,可以看出字符串与数字,赋值、浅拷贝、深拷贝,其结果是一样的,都指向了同一个内存地址


   2、字典,列表,元组

1
2
3
4
5
6
7
8
9
1、赋值:只是创建了一个引用,内存地址不变
d1 = { 'k1' : 'v1' , 'k2' :123, 'k3' :[11, '22' ,]}
d2 = d1
print( id (d1))
print( id (d2))
##########
result:
5349704
5349704


wKioL1k0F6zTZ59uAAAzeS93P3k751.png

1
2
3
4
5
6
7
8
9
10
11
12
13
2、浅拷贝,在内存中额外创建第一层引用
d1 = { 'k1' : 'v1' , 'k2' :123, 'k3' :[11, '22' ,]}
d2 = copy.copy(d1)
print( id (d1))
print( id (d1[ 'k3' ]))
print( id (d2[ 'k3' ]))
print( id (d2))
##########
result:
34971976
35475168
35475168
35225192

wKioL1k0F8qg3Z8UAABNsN3TQ-0568.png-wh_50

1
2
3
4
5
6
7
8
9
10
11
12
13
3、深拷贝,在内存中创建除字符串与数字外的所有层
d1 = { 'k1' : 'v1' , 'k2' :123, 'k3' :[11, '22' ,]}
d2 = copy.deepcopy(d1)
print( id (d1))
print( id (d1[ 'k3' ]))
print( id (d2[ 'k3' ]))
print( id (d2))
##########
result:
6922568
7425760
7361520
6922808

wKioL1k0F-azghEqAABcDNrOyTw640.png


本文转自 元婴期 51CTO博客,原文链接:http://blog.51cto.com/jiayimeng/1932127


相关文章
|
7天前
|
机器学习/深度学习 算法 Python
使用Python实现集成学习算法:Bagging与Boosting
使用Python实现集成学习算法:Bagging与Boosting
18 0
|
8天前
|
Python
python学习-函数模块,数据结构,字符串和列表(下)
python学习-函数模块,数据结构,字符串和列表
49 0
|
9天前
|
Python
python学习14-模块与包
python学习14-模块与包
|
9天前
|
Python
python学习12-类对象和实例对象
python学习12-类对象和实例对象
|
9天前
|
数据采集 Python
python学习9-字符串
python学习9-字符串
|
9天前
|
Python
python学习10-函数
python学习10-函数
|
9天前
|
存储 索引 Python
python学习7-元组
python学习7-元组
|
9天前
|
Python
python学习8-集合
python学习8-集合
|
9天前
|
Python
python学习4-内置函数range()、循环结构、循环控制语句、else语句、嵌套循环
python学习4-内置函数range()、循环结构、循环控制语句、else语句、嵌套循环
|
9天前
|
存储 索引 Python
python学习5-列表的创建、增删改查、排序
python学习5-列表的创建、增删改查、排序