1、浅拷贝的三种形式
```
import copy
jack = ['jack',['age',20]]
tom = jack[:]
anny = list(jack)
zroad = copy.copy(jack)
2、深拷贝与浅拷贝的区别:
tom[0] = 'tom'
anny[0] = 'anny'
zroad[0] = 'zroad'
print jack,'\n',tom,'\n',anny,'\n',zroad
"""
浅拷贝输出结果:修改第一个元素,均改变,是因为第一个元素为字符串为不可变元素:
['jack', ['age', 20]]
['tom', ['age', 20]]
['anny', ['age', 20]]
['zroad', ['age', 20]]
"""
tom[1][1] = 25
anny[1][1] = 30
zroad[1][1] = 35
zroad[1][0] = "AGE"
print jack,'\n',tom,'\n',anny,'\n',zroad
"""
浅拷贝修改第二个元素,所有的拷贝元素的值都统一改变成同一值:
['jack', ['age', 35]]
['tom', ['age', 35]]
['anny', ['age', 35]]
['zroad', ['age', 35]]
"""
"""
结论:浅拷贝外层拷贝的是对象(变量tom,anny,zroad),内部元素拷贝的是引用
"""
ZROAD = copy.deepcopy(jack)
ZROAD[0] = 'ZROAD'
ZROAD[1][1] = 40
ZROAD[1][0] = 'age'
print jack,'\n',ZROAD
"""
['jack', ['AGE', 35]]
['ZROAD', ['age', 40]]
结论:深拷贝外层拷贝的是对象,内部元素拷贝的也是对象,深拷贝后的对象同原来的是各自独立的,互不影响
"""
3、浅拷贝与深拷贝的区别整理:
- 浅拷贝外层拷贝的是对象(变量tom,anny,zroad),内部元素拷贝的是引用
- 深拷贝外层拷贝的是对象,内部元素拷贝的也是对象,深拷贝后的对象同原来的是各自独立的,互不影响