python基础三(深浅拷贝)
Posted shine-rainbow
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python基础三(深浅拷贝)相关的知识,希望对你有一定的参考价值。
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基础三(深浅拷贝)的主要内容,如果未能解决你的问题,请参考以下文章