print(alist)
print(blist)
[1,2,3,‘b_append’]
[1,2,3,‘b_append’]
修改任意一个list 两者的都发生变化 alist == blist
#### 浅拷贝
##### copy模块里面的copy方法实现
>
> 通过copy模块里面的浅拷贝函数copy(),对原始变量指向的对象进行浅拷贝,然后浅拷贝生成的新对象赋值给新的变量
> 浅拷贝会创建一个对象,对于对象中的元素,浅拷贝就只会使用原始元素的引用(内存地址)
>
>
>
##### 对内部元素影响
* 不可变的类型,浅拷贝只是地址指向,不会开辟新空间
* 可变的数据类型,浅拷贝会开辟新的空间地址(仅仅是顶层开辟了新的空间,里层的元素地址还是一样的),进行浅拷贝
* 浅拷贝后,改变原始对象中可变类型元素的值,会同时影响拷贝对象,改变原始对象中不可变类型元素的值,只有原始类型受影响,操作拷贝对象对原始对象的也是同理
import copy
#定义alist,并拷贝给blist
alist = [1,2,3,[6,7,8]]
blist = alist.copy()
#查看alist 与 blist内存地址
print(‘alist与blist的地址分别为’)
print(id(alist))
print(id(blist))
alist与blist的地址分别为
2056373019592
2056373060616
#查看alist与blist内元素的地址
print(‘alist与blist内元素的地址分别为’)
print([id(x) for x in alist])
print([id(x) for x in blist])
alist与blist内元素的地址分别为
[140710155244576, 140710155244608, 140710155244640, 2056373019336]
[140710155244576, 140710155244608, 140710155244640, 2056373019336]
print(‘修改alist的内元素的值’)
alist.append(‘a_append’)
print(alist)
print(blist)
修改alist的内元素的值
[1, 2, 3, [6, 7, 8], ‘a_append’]
[1, 2, 3, [6, 7, 8]]
print(‘修改alist中的列表元素的值’)
alist[3].append(‘a_second_append’)
print(alist)
print(blist)
#修改alist中的列表元素的值
[1, 2, 3, [6, 7, 8, ‘a_second_append’], ‘a_append’]
[1, 2, 3, [6, 7, 8, ‘a_second_append’]]
#### 深拷贝
##### copy模块里面的deepcopy方法实现
* 通过copy模块里面的深拷贝函数deepcopy(),对原始变量指向的对象进行深拷贝,然后深拷贝生成的新对象赋值给新的变量
* 跟浅拷贝类似,深拷贝也会创建一个新的对象
>
> 对于对象中的元素,深拷贝都会重新生成一份,而不是简单的使用原始元素的引用(内存地址)
> 经过深拷贝后,原始对象和拷贝对象所有的子元素地址都是独立的了
>
>
>
import copy
#定义alist,并深度拷贝给blist
alist = [1,2,3,[6,7,8]]
blist = copy.deepcopy(alist)
#查看alist 与 blist内存地址
print(‘alist与blist的地址分别为’)
print(id(alist))
print(id(blist))
alist与blist的地址分别为
2612203103176
2612203144200
#查看alist与blist内元素的地址
print(‘alist与blist内元素的地址分别为’)
print([id(x) for x in alist])
print([id(x) for x in blist])
alist与blist内元素的地址分别为
[140710155244576, 140710155244608, 140710155244640, 1993019826888]
[140710155244576, 140710155244608, 140710155244640, 1993020930824]
print(‘修改alist的内元素的值’)
alist.append(‘a_append’)
print(alist)
最后
🍅 硬核资料:关注即可领取PPT模板、简历模板、行业经典书籍PDF。
🍅 技术互助:技术群大佬指点迷津,你的问题可能不是问题,求资源在群里喊一声。
🍅 面试题库:由技术群里的小伙伴们共同投稿,热乎的大厂面试真题,持续更新中。
🍅 知识体系:含编程语言、算法、大数据生态圈组件(Mysql、Hive、Spark、Flink)、数据仓库、Python、前端等等。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!