首页 > 编程语言 > 详细

Python 深浅拷贝

时间:2018-01-10 13:45:40      阅读:235      评论:0      收藏:0      [点我收藏+]

s1 = s.copy()
s1[0]='s1'
s[2][0] = 2
s1[2][1]=4
输出:
['s', 'sname', [2, 4]]
['s1', 'sname', [2, 4]]

浅拷贝只拷贝第一层  即  s1拷贝生成新的空间存储  s  sname 修改不会影响s   在s1中存储  [1,2] 为地址指向


浅拷贝和A=B不同

A=123
B=A
B=456
print(A)
print(B)
输出:
123
456


s = ['s', 'sname', [1, 2]]
s1 = s
s1[0]='s1'
s[2][0] = 2
s1[2][1]=4
输出:
['s1', 'sname', [2, 4]]
['s1', 'sname', [2, 4]]

当A=B时  只是简单数字字符串时  B指向A指向的地址 当B改掉后 B新开辟内存空间存储新的值

当s=s1   列表等复杂数据类型   指向的是一个整体的地址 共享一块内存空间不会开辟新的内存空间


技术分享图片


技术分享图片


import 
copys = ['s', 'sname', [1, 2]]
s1 = ss1[0]='s1's[2][0] = 2
s1[2][1]=4
s3= copy.deepcopy(s)
s3[0] = 's3'
s3[2][0]=6
print(s)
print(s1)
print(s3)
输出:
['s1', 'sname', [2, 4]]
['s1', 'sname', [2, 4]]
['s3', 'sname', [6, 4]]
#深层拷贝
-----------------
import copy
copy.deepcopy(s)
-----------------


Python 深浅拷贝

原文:http://blog.51cto.com/13562606/2059377

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!