Python 深浅拷贝

简介:
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   列表等复杂数据类型   指向的是一个整体的地址 共享一块内存空间不会开辟新的内存空间


877318-20160830122427465-1611691712.png


877318-20160830122448808-806536515.png


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)
-----------------















本文转自lb沫51CTO博客,原文链接:http://blog.51cto.com/13562606/2059377,如需转载请自行联系原作者
相关文章
|
7月前
|
Python
深入理解Python数据结构中的深浅拷贝
深入理解Python数据结构中的深浅拷贝
|
Python
Python | Python学习之深浅拷贝
Python | Python学习之深浅拷贝
|
存储 Python
【Python零基础入门篇 · 11】:类型转换和深浅拷贝,可变对象和不可变对象、pass语句
【Python零基础入门篇 · 11】:类型转换和深浅拷贝,可变对象和不可变对象、pass语句
107 0
【Python零基础入门篇 · 11】:类型转换和深浅拷贝,可变对象和不可变对象、pass语句
|
Java Python
Python基础 | 深浅拷贝问题、递归函数练习
在实际工作中,经常涉及到数据的传递,在数据传递使用过程中,可能会发生数据被修改的问题。为了防止数据被修改,就需要在传递一个副本,即使副本被修改,也不会影响原数据的使用。为了生成这个副本,就产生了拷贝。下面先了解一下几个概念:对象、可变类型、引用
261 0
Python基础 | 深浅拷贝问题、递归函数练习
|
Python
Python列表中的深浅拷贝,你学废了嘛?
Python列表中的深浅拷贝,你学废了嘛?
140 0
Python列表中的深浅拷贝,你学废了嘛?
|
Python
Python | Python学习之深浅拷贝
直接步入正题,聊一聊 Python 中的深浅拷贝
1742 0
|
Java Python
Python中深浅拷贝 垃圾回收与 super继承(六)
1 python拷贝 深拷贝,浅拷贝 与引用三者的区别 import copy a = [1, 2, 3, 4, ['a', 'b']] #原始对象 b = a #赋值,传对象的引用 c = copy.