python3 深浅拷贝实例详解
2018-12-15 17:04
429 查看
list1 = [1,2,3] list2 = list1 #list1赋值给list2 list1.append(4) print(list1,list2,id(li 4000 st1),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
结论,深拷贝拷贝的列表,完全没有任何关系
相关文章推荐
- Python中的深浅拷贝详解
- Python中的深浅拷贝详解
- Python多进程并发(multiprocessing)用法实例详解
- Python编程之多态用法实例详解
- python获取指定时间差的时间实例详解
- Python中的闭包实例详解
- 对python判断ip是否可达的实例详解
- Python3.2中Print函数用法实例详解
- python爬虫框架scrapy实例详解
- Python设计模式之策略模式实例详解
- Python中复制,浅拷贝,深拷贝的区别详解
- python urllib2详解及实例
- python实现DES加密解密方法实例详解
- Python决策树和随机森林算法实例详解
- **Python中的深拷贝和浅拷贝详解
- Python对象的深拷贝和浅拷贝详解
- python闭包详解+实例演示
- linux scp命令参数及用法详解--linux远程复制拷贝命令使用实例
- Python开发【第二章】:深浅拷贝剖析
- 详解python脚本自动生成需要文件实例代码