目标:掌握复杂可变类型【列表的嵌套】的深浅拷贝的区别
一:复杂可变类型【列表的嵌套】的深浅拷贝的区别
注意:列表的嵌套可看做是一个对象,这样就更好的理解深浅拷贝定义的后两句话了!
列表的嵌套浅拷贝:A是一个列表的嵌套对象,其中的子列表地址指向的是原列表的地址,相当于地址的引用,对A列表对象进行浅复制会产生新的内存空间,但是A列表内的子列表经过浅复制后不会产生新的空间,依旧是原列表地址的引用,因此对原列表数据进行更改,浅复制后的数据将发生变化!!
简而言之:浅拷贝不会拷贝嵌套列表的子列表,只拷贝了地址(引用子列表)
图示:
代码演示:
注意:下面代码没有演示对A列表数据改变,观察C[0]与D[0]的数据变化 结果是也变化
列表的嵌套深拷贝:对嵌套的列表进行深复制会产生新的内存空间,并且嵌套的字列表也会产生新的内存空间,不再是地址的引用复制,这样对原数据进行更改,深复制后的数据将不再发生变化
图示:
代码演示: