python 深浅copy总结
总结:
''' 总结:假设l1为原数据,l2为deepcopy后的数据: 1.浅copy,只能改变第一层的内存地址(不可变数据类型除外)。 2.深copy,能够改变第一层和第二层的内存地址(不可变数据类型除外)。 3.不可变类型,地址不会发生变化,且不可使用copy ,可以使用copy.deepcopy()。 4.对deepcopy后的l1或l2数据修改时,l1和l2的内存地址都会发生变化,但l1和l2的数据不会相互干扰。 ''' import copy l1=[{'name':'jack'},(1,2,3)] l2=copy.deepcopy(l1) # l2=l1.copy() print("第一层地址变化") print(id(l1)) print(id(l2)) print('第三层字典变化') print(id(l1[0]['name'])) print(id(l2[0]['name'])) print('第二层元祖变化') print(id(l1[1])) print(id(l2[1])) l3=(1,2,3) # l4=copy.deepcopy(l3) l4=l3.copy() print("第一层地址变化") print(id(l3)) print(id(l4))
总结:经验固然可贵,但唯有实践出真知。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步