Python深淺拷貝

2021-09-11 22:53:01 字數 678 閱讀 1252

# 深淺拷貝

# 無論修改哪一層 賦值的話都會修改 共享一塊記憶體空間

a = [[1, 2], 'joe', 'smith']

b = a

a[0][0] = 3

print('賦值修改第二層', a, b)

a[1] = '88'

print('賦值修改第一層', a, b)

# 拷貝的話 只會影響到第一層 第2,3...層都沒有

a = [[1, 2], 'joe', 'smith']

b = a.copy()

a[0][0] = 3

print('拷貝修改第二層', a, b)

a[1] = '88'

print('拷貝修改第一層', a, b)

# 淺拷貝 只會拷貝第一層 不會拷貝第2.3...

# 重要 b 與 b2的區別

a =

b = a # 深拷貝 共享一塊記憶體

b2 = a.copy() # 淺拷貝 只會影響到第一層

# 賦值 a指向1的位址 b也指向了1的位址(雖然是通過a,但是也是獲得最後的1的位址) 然後a又指向了2的位址

a = 1

b = a

a = 2

print(a)

print(b)

要點:

python 深淺拷貝案例 python 深淺拷貝

深淺拷貝 對於 數字 和 字串 而言,賦值 淺拷貝和深拷貝無意義,因為其永遠指向同乙個記憶體位址 import copy a1 22255 a2 22255 print id a1 id a2 3428240 3428240 對於字典 元祖 列表 而言,進行賦值 淺拷貝和深拷貝時,其記憶體位址的變化...

python 深淺拷貝

建立乙個寬度為3,高度為4的陣列 mylist 0 3 4 0,0,0 0,0,0 0,0,0 0,0,0 但是當操作mylist 0 1 1時,發現整個第二列都被賦值,變成 0,1,0 0,1,0 0,1,0 0,1,0 list n n shallow copies of list concat...

python深淺拷貝

python 深淺拷貝 shallow copy 和 deep copy 對於乙個列表,列表裡面可以再放入乙個列表 1 若想複製這乙個列表,使用列表的普通的copy 方法,只能拷貝出列表裡表層的元素,而列表裡的列表卻無法拷貝,只能指向前乙個列表.修改拷貝出的列表裡列表裡的元素,原來的列表會發生改變....