python列表复制(浅拷贝and深拷贝)
来源:互联网 发布:乐乎网络电话 编辑:程序博客网 时间:2024/06/05 15:06
1》
>>> l=[1,2,3,4]
>>> l1=l
>>> l
[1, 2, 3, 4]
>>> l1
[1, 2, 3, 4]
>>> id(l)
140565035576856
>>> id(l1)
140565035576856
这种做法是将l中的地址赋给了l1,并未真正生成一个新的列表,l1和l指向的是同一个列表。
如果对l或l1的元素进行修改,列表l和l1会同时发生变化。
>>> l.append(9)
>>> l
[1, 2, 3, 4, 9]
>>> l1
[1, 2, 3, 4, 9]
下图显示了上述变化:
2》
>>> l
[1, 2, 3]
>>> l1=l[:]#浅拷贝
>>> l
[1, 2, 3]
>>> l1
[1, 2, 3]
>>> id(l)
140565035576784
>>> id(l1)
140565035497736
>>> id(l[0])
30695768
>>> id(l1[0])
30695768
>>> l[0]=99
>>> l
[99, 2, 3]
>>> l1
[1, 2, 3]
上述代码可用下图来解释:
3》
>>> l=[1,2,[4,5]]
>>> l1=l[:]
>>> l
[1, 2, [4, 5]]
>>> l1
[1, 2, [4, 5]]
>>> len(l)
3
>>> l[2]
[4, 5]
>>> l[2].append(8)
>>> l
[1, 2, [4, 5, 8]]
>>> l1
[1, 2, [4, 5, 8]]
上述代码可用下图解释:
4》
>>> import copy
>>> l
[1, 2, [4, 5, 8]]
>>> l1=copy.copy(l)#浅拷贝
>>> l
[1, 2, [4, 5, 8]]
>>> l1
[1, 2, [4, 5, 8]]
>>> l[2].pop()
8
>>> l
[1, 2, [4, 5]]
>>> l1
[1, 2, [4, 5]]
copy.copy(l)与l[:]都是浅拷贝,功能一样,此处就不画图了。
5》
>>> import copy
>>> l=[2,3,[4,5]]
>>> l1=copy.deepcopy(l)#深拷贝
>>> l
[2, 3, [4, 5]]
>>> l1
[2, 3, [4, 5]]
>>> l[2].append(9)
>>> l
[2, 3, [4, 5, 9]]
>>> l1
[2, 3, [4, 5]]
>>> l=[1,2,3,4]
>>> l1=l
>>> l
[1, 2, 3, 4]
>>> l1
[1, 2, 3, 4]
>>> id(l)
140565035576856
>>> id(l1)
140565035576856
这种做法是将l中的地址赋给了l1,并未真正生成一个新的列表,l1和l指向的是同一个列表。
如果对l或l1的元素进行修改,列表l和l1会同时发生变化。
>>> l.append(9)
>>> l
[1, 2, 3, 4, 9]
>>> l1
[1, 2, 3, 4, 9]
下图显示了上述变化:
2》
>>> l
[1, 2, 3]
>>> l1=l[:]#浅拷贝
>>> l
[1, 2, 3]
>>> l1
[1, 2, 3]
>>> id(l)
140565035576784
>>> id(l1)
140565035497736
>>> id(l[0])
30695768
>>> id(l1[0])
30695768
>>> l[0]=99
>>> l
[99, 2, 3]
>>> l1
[1, 2, 3]
上述代码可用下图来解释:
3》
>>> l=[1,2,[4,5]]
>>> l1=l[:]
>>> l
[1, 2, [4, 5]]
>>> l1
[1, 2, [4, 5]]
>>> len(l)
3
>>> l[2]
[4, 5]
>>> l[2].append(8)
>>> l
[1, 2, [4, 5, 8]]
>>> l1
[1, 2, [4, 5, 8]]
上述代码可用下图解释:
4》
>>> import copy
>>> l
[1, 2, [4, 5, 8]]
>>> l1=copy.copy(l)#浅拷贝
>>> l
[1, 2, [4, 5, 8]]
>>> l1
[1, 2, [4, 5, 8]]
>>> l[2].pop()
8
>>> l
[1, 2, [4, 5]]
>>> l1
[1, 2, [4, 5]]
copy.copy(l)与l[:]都是浅拷贝,功能一样,此处就不画图了。
5》
>>> import copy
>>> l=[2,3,[4,5]]
>>> l1=copy.deepcopy(l)#深拷贝
>>> l
[2, 3, [4, 5]]
>>> l1
[2, 3, [4, 5]]
>>> l[2].append(9)
>>> l
[2, 3, [4, 5, 9]]
>>> l1
[2, 3, [4, 5]]
上述代码可用下图解释:
本文中的图片解释是个人理解,如有错误,请指出。
(完)
1 0
- python列表复制(浅拷贝and深拷贝)
- python字典复制(浅拷贝and深拷贝)
- python中的复制 浅拷贝 深拷贝
- python复制,浅拷贝,深拷贝理解
- Python 深复制浅复制or深拷贝浅拷贝
- Python深复制浅复制or深拷贝浅拷贝
- Python深复制浅复制or深拷贝浅拷贝
- Python深复制浅复制or深拷贝浅拷贝
- Python深复制浅复制or深拷贝浅拷贝
- Python中的赋值以及深复制和浅复制(深拷贝和浅拷贝)
- Python复制——浅拷贝、深拷贝、切片
- python的复制,深拷贝和浅拷贝
- 深拷贝and浅拷贝
- python深拷贝浅拷贝
- python-深拷贝,浅拷贝
- python浅拷贝深拷贝
- python深拷贝浅拷贝
- python浅拷贝 深拷贝
- js tool
- Localstorage处理异常
- 第三章:Java基础程序设计(上)
- 简便轻巧的使用SharedPreferences 存储
- cookie.js
- python列表复制(浅拷贝and深拷贝)
- HDU 1020 Encoding
- nfs pure-ftpd vsftp的快速部署与配置
- MySQL数据导入导出
- 简单正则表达式
- UVa572-Oil Deposits
- 网页文本框大小设置
- 初学OpenMP
- java由出生日期算出年龄