Python深浅拷贝辨析
生活随笔
收集整理的這篇文章主要介紹了
Python深浅拷贝辨析
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1 import copy
2
3 list1 = [11, 22, [33, 44]]
4 list2 = list1
5 list3 = list1[:]
6 list4 = copy.copy(list1)
7 list5 = copy.deepcopy(list1)
8
9 list1[0] = 0 # 對列表的首層做增刪改查操作
10 print("list1:",id(list1),list1) # list1: 1455502266696 [0, 22, [33, 44]]
11 print("list2:",id(list2),list2) # list2: 1455502266696 [0, 22, [33, 44]]
12 print("list3:",id(list3),list3) # list3: 1455502266504 [11, 22, [33, 44]]
13 print("list4:",id(list4),list4) # list4: 1455502266440 [11, 22, [33, 44]]
14 print("list5:",id(list5),list5) # list5: 1455502155656 [11, 22, [33, 44]]
15
16 list1[2].append(55) # 對列表中嵌套的列表(第二層)做增刪改查操作
17 print("list1:",id(list1),list1) # list1: 2439457411400 [11, 22, [33, 44, 55]]
18 print("list2:",id(list2),list2) # list2: 2439457411400 [11, 22, [33, 44, 55]]
19 print("list3:",id(list3),list3) # list3: 2439457411208 [11, 22, [33, 44, 55]]
20 print("list4:",id(list4),list4) # list4: 2439457411144 [11, 22, [33, 44, 55]]
21 print("list5:",id(list5),list5) # list5: 2439457300360 [11, 22, [33, 44]] 結(jié)論:只有等號的賦值操作內(nèi)存地址才相同,其它都是開辟了另外的一個內(nèi)存。(但是當(dāng)給一個已經(jīng)存在的變量重新賦值的時候此變量的內(nèi)存地址會發(fā)生變化。) ?? ??? ?? ? 切片操作:(淺拷貝)雖然生成了新的列表,但是在對原列表里層嵌套的列表做修改的時候,切片過來的列表也會改變。 ?? ??? ?? ? 只有深拷貝copy.deepcopy()操作的時候,對里層的列表做增刪改查才不會改變。
?
轉(zhuǎn)載于:https://www.cnblogs.com/aberwang/p/10397494.html
總結(jié)
以上是生活随笔為你收集整理的Python深浅拷贝辨析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 掌握常见的内部排序方法(插入排序,冒泡排
- 下一篇: 项目管理及Office Project