行测 mongoose audio graphics 网页后台模板 android开发项目 jquery延时 ie内核浏览器怎么设置 div外边距 删除数组第一个元素 cpm怎么计算 idea批量替换快捷键 mysql时间戳转时间 mysql学习 input函数python java在线教程 java正则匹配 java日期 java基础类型 java的方法 java怎么写接口 bash命令 通达信金融终端官网 wine模拟器 begininvoke collect js保留两位小数 博途v14安装教程 办公室复印机使用方法 ps怎么画漫画 deallocate c语言图书管理系统 卸载mysql 苹果手机怎么微信双开 启用宏在哪里设置 软件编程软件 战地1942修改器 制表符 工行天天益 nwiz
当前位置: 首页 > 学习教程  > 编程学习

python3 深浅拷贝实例详解

2021/1/9 2:04:51 文章标签: 深浅拷贝

list1 [1,2,3] list2 list1 #list1赋值给list2 list1.append(4) print(list1,list2,id(list1),id(list2))[1, 2, 3, 4] [1, 2, 3, 4] 2701210018056 2701210018056>>> 结论:使用等号赋值list1和list2 指向同一内存地址 list1 [1,2,3] list2 list1.cop…

list1 = [1,2,3]
list2 = list1  #list1赋值给list2
list1.append(4)
print(list1,list2,id(list1),id(list2))

[1, 2, 3, 4] [1, 2, 3, 4] 2701210018056 2701210018056>>> 结论:使用等号赋值list1和list2 指向同一内存地址

list1 = [1,2,3]
list2 = list1.copy()  #list1赋值给list2
list1.append(4)
print(list1,list2,id(list1),id(list2))

[1, 2, 3, 4] [1, 2, 3] 1597546094984 1597546094664 >>>结论:使用copy函数赋值list1和list2 指向不同内存地址

list1 = [1,2,[3,4],5]
list2 = list1.copy()
print(list1,id(list1),list2,id(list2))
list1.append('x')
print(list1,id(list1),list2,id(list2))

list1[2].append('y')
print(list1,id(list1[2]),list2,id(list2[2]))

[1, 2, [3, 4], 5] 1930966720584 [1, 2, [3, 4], 5] 1930966687688
[1, 2, [3, 4], 5, ‘x’] 1930966720584 [1, 2, [3, 4], 5] 1930966687688
[1, 2, [3, 4, ‘y’], 5, ‘x’] 1930966720904 [1, 2, [3, 4, ‘y’], 5] 1930966720904
结论copy函数进行的拷贝称做浅拷贝。列表的内存地址是不同的,列表内元素的内存地址相同。

import copy
list1 = [1,2,[3,4],5]
list2 =  copy.deepcopy(list1)
list1[2].append('x')
print(list1,id(list1[2]),list2,id(list2[2]))

[1, 2, [3, 4, ‘x’], 5] 1854232977736 [1, 2, [3, 4], 5] 1854232978120
结论,深拷贝拷贝的列表,完全没有任何关系


本文链接: http://www.dtmao.cc/news_show_1100286.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?