码迷,mamicode.com
首页 > 编程语言 > 详细

python基础三(深浅拷贝)

时间:2018-10-11 22:37:25      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:[1]   --   class   开始   list   style   拷贝   bar   span   

1.赋值操作

1 list_1 = [1,2,3,[barry,Jerry]]
2 list_2 = list_1
3 list_1[0] = 111
4 print(list_1) #  [111, 2, 3, [‘barry‘, ‘Jerry‘]]
5 print(list_2) #  [111, 2, 3, [‘barry‘, ‘Jerry‘]]

对于赋值运算操作。list[1]与list[2]指向的是同一个内存地址。所以完全一样

2.浅拷贝

1 # -------------浅拷贝----------------
2 # 对于浅拷贝而言。第一层的创建时新的内存地址。而从第二层开始指向的都是同一块内存地址
3 list_1 = [1,2,3,[barry,Jerry]]
4 list_2 = list_1.copy()
5 list_1[0] = 111
6 print(id(list_1[3])) # 40904072 同一块内存地址
7 print(id(list_2[3])) # 40904072 同上
8 print(list_1) # [111, 2, 3, [‘barry‘, ‘Jerry‘]]
9 print(list_2) #  [1, 2, 3, [‘barry‘, ‘Jerry‘]]

对于浅拷贝而言。第一层创建时产生新的内存地址。而从第二层开始指向的都是同一块内存地址

3.深拷贝

1 # -------------深拷贝----------------
2 import copy
3 list_1 = [1,2,3,[barry,Jerry]]
4 list_2 = copy.deepcopy(list_1)
5 list_1[3][0]=[Jack]
6 print(list_1) # [1, 2, 3, [[‘Jack‘], ‘Jerry‘]]
7 print(list_2) # [1, 2, 3, [‘barry‘, ‘Jerry‘]]

对于深拷贝而已。创建两个不同的内存地址。只是将list1 中的元素完整的拷贝一份给list2

python基础三(深浅拷贝)

标签:[1]   --   class   开始   list   style   拷贝   bar   span   

原文地址:https://www.cnblogs.com/shine-rainbow/p/9775400.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!