1. 程式人生 > >Python深淺拷貝

Python深淺拷貝

log cnblogs 技術 python images 深拷貝 只有一個 可變對象 拷貝

淺拷貝:

a=[[1,2],3,4]

b=a.copy()

這裏的b只會拷貝a的第一層,即[[],23]

因為a[0]是一個列表,可變對象,所以b copy的只是列表[]的內存地址,而不是[1,2]的內存地址。

如果修改[1,2]則a,b都會變,但是如果只修改2,3,只有一個變

import copy 
a=[[1,2],3,4]
b=copy.copy(a)

技術分享

b[0][0]=9

print(b) #[[9,2],3,4]

print(a) #[[9,2],3,4]

技術分享

深拷貝

import copy

a=[[1,2],3,4]
b=copy.deepcopy(a)   #b=[
[[1,2],3,4]]
b[
0][0]=9
print(a)
print(b)

技術分享

不是深淺拷貝

a=[[1,2],3,4]
b=a
b[2]=9   #b指向a的那列表
print(a)
print(b)

技術分享



Python深淺拷貝