时间:2022-09-27 11:10:56 | 栏目:Python代码 | 点击:次
# a这个大列表是一个父对象,里面的小列表是a的一个子对象 a = [1, 2, 3, ["a", "b"]] # 赋值实例 b = a print("a:", a) print("b:", b) ## 打印结果 a: [1, 2, 3, ['a', 'b']] b: [1, 2, 3, ['a', 'b']]
解析:
b = a: 赋值引用,a 和 b 都指向同一个对象,所以得到的结果都一样
# 浅拷贝实例 a = [1, 2, 3, ["a", "b"]] c = a.copy() # 第一次打印 print("a:", a) print("c:", c) # 给a对象中的子对象添加元素 a[3].append("c") print("a:", a) print("c:", c) # 给a这个父对象添加元素 a.append(4) print("a:", a) print("c:", c) ## 打印结果 a: [1, 2, 3, ['a', 'b']] c: [1, 2, 3, ['a', 'b']] a: [1, 2, 3, ['a', 'b', 'c']] c: [1, 2, 3, ['a', 'b', 'c']] a: [1, 2, 3, ['a', 'b', 'c'], 4] c: [1, 2, 3, ['a', 'b', 'c']]
解析:
c = a.copy(): 浅拷贝, a 和 c 是一个独立的对象,但他们的子对象还是指向统一对象(是引用子对象)。
# 深拷贝实例 import copy a = [1, 2, 3, ["a", "b"]] d = copy.deepcopy(a) # 第一次打印 print("a:", a) print("d:", d) # 给a对象中的子对象添加元素 a[3].append("c") print("a:", a) print("d:", d) # 给a这个父对象添加元素 a.append(4) print("a:", a) print("d:", d) ## 打印结果 a: [1, 2, 3, ['a', 'b']] d: [1, 2, 3, ['a', 'b']] a: [1, 2, 3, ['a', 'b', 'c']] d: [1, 2, 3, ['a', 'b']] a: [1, 2, 3, ['a', 'b', 'c'], 4] d: [1, 2, 3, ['a', 'b']]
解析:
d = copy.deepcopy(a): 深度拷贝, d 完全拷贝了a这个父对象及其子对象,a与d两者是完全独立的。