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) -----------------
本文转自lb沫51CTO博客,原文链接:http://blog.51cto.com/13562606/2059377,如需转载请自行联系原作者