1. 程式人生 > >賦值,淺拷貝,深拷貝自己的理解

賦值,淺拷貝,深拷貝自己的理解

賦值

a=[1,2,3,4,[35,44,66]]
b=a
b[0]=11
print(a)
print(b)

#[11, 2, 3, 4, [35, 44, 66]]
#[11, 2, 3, 4, [35, 44, 66]]

 

淺拷貝

import copy
a=[1,2,3,4,[35,44,66]]
b=copy.copy(a)
b[0]=11
print('a',a)
print('b',b)
b[-1][0]=22
print('a',a)
print('b',b)

#a [1, 2, 3, 4, [35, 44, 66]]
#b [11, 2, 3, 4, [35, 44, 66]] #a [1, 2, 3, 4, [22, 44, 66]] #b [11, 2, 3, 4, [22, 44, 66]]

拷貝了一份a給b,修改b的索引為1的元素,b變了,a沒有變,因為數字是不可變的,修改b索引為-1的元素裡的元素,發現a變了,因為列表是可變的

 

深拷貝

import copy
a=[1,2,3,4,[35,44,66]]
b=copy.deepcopy(a)
b[0]=11
print('a',a)
print('b',b)
b[-1][0]=22
print('a
',a) print('b',b)

#a [1, 2, 3, 4, [35, 44, 66]]
#b [11, 2, 3, 4, [35, 44, 66]]
#a [1, 2, 3, 4, [35, 44, 66]]
#b [11, 2, 3, 4, [22, 44, 66]]

深拷貝是完全複製了一份,對a進行深拷貝給b,那麼不管怎麼改變b的元素和它元素中的子元素,a的元素和元素中的子元素都不會變