1. 程式人生 > >python的深淺拷貝 copy

python的深淺拷貝 copy

普通資料之間賦值 不能使我們的可變物件,各自佔有
比如

mylist = [1,2,3]
mylist1= mylist
mylist[1]=4
print(mylist1)
[1, 4, 3]
你會發現 你修改了mylist 結果由mylist複製而來的可變變數都隨之而變
所以 假如你想不互相影響 普通複製 是滿足不了需求的
這個使用切片 例如
mylist = [1,2,3]
mylist1= mylist
mylist1=mylist[:]
mylist[1]=4
print(mylist1)
[1, 2, 3]
這個時候 就不會互相影響 這個就是切片拷貝 也是淺拷貝
但是切片拷貝有時候也會沒有 例如
mylist=[1,2,3,[2,3]]
mylist1=mylist[:]
mylist[3][1]=5
print(mylist1)
[1, 2, 3, [2, 5]]
我們聲明瞭一個 列表 這個列表裡面含另外一個列表 然後複製 修改列表裡面的列表資料的時候,複製而來的列表也會相應的產生變化,所以 切片拷貝也不能滿足這樣的需求,所以我們就要用到深度拷貝

import copy
mylist=[1,2,3,[2,3]]
mylist1=copy.deepcopy(mylist)
mylist[3][1]=5
print(mylist1)
[1, 2, 3, [2, 3]]
這樣 兩個之間就完全不影響
mylist=[1,2,3,[2,3,[1]]]
mylist1 = copy.deepcopy(mylist)
mylist[3][2][0]=5
print(mylist1)
[1, 2, 3, [2, 3, [1]]]

同樣如果在深一層也是如此