复制问题 (python)

来源:互联网 发布:台湾国护照贴纸 知乎 编辑:程序博客网 时间:2024/06/05 06:01

这里讨论三种复制:

1.等号复制

2.浅拷贝

3.深拷贝


例:

a = [ [0] ]

b1 = a #等号复制

b2 = copy.copy(a) #浅拷贝

b3 = copy.deepcopy(a) #深拷贝


a[0][0] = 1

print a,b1,b2,b3

# [[1]] [[1]] [[1]] [[0]]


a[0] = [2]

print a,b1,b2,b3

# [[2]] [[2]] [[1]] [[0]]


a = [[3]]

print a,b1,b2,b3

# [[3]] [[2]] [[1]] [[0]]


解析:

b3是对a进行递归复制,复制之后b3与a无任何关系;

b2是对a进行一层复制,复制之后b2包含与a相同的值,但b2与a不是同一个引用;

b1是对a进行引用复制,复制之后b2与a引用同一个实体。




0 0
原创粉丝点击