日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python深浅拷贝的底层理解_理解python中的深拷贝与浅拷贝

發布時間:2023/12/15 python 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python深浅拷贝的底层理解_理解python中的深拷贝与浅拷贝 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

python中淺拷貝和深拷貝的區別如下:

1. copy.copy 等價于切片[:]? 淺拷貝 只拷貝父對象,不會拷貝對象的內部的子對象。2個列表是不同的,但是子列表指向的仍然是同一個地址

2. copy.deepcopy 深拷貝 拷貝對象及其子對象,確保2個列表不會影響對方,包括子列表

import copy

list1 = [1,2,3,4]

print(id(list1))? ?#96011592

list2 = list1.copy()

print(list2)? ?#[1, 2, 3, 4]

print(id(list2))? #95979528

print(list1 is list2)? #False

list3 = copy.deepcopy(list1)

print(list3)? ?#[1, 2, 3, 4]

print(id(list3))? #31271112

print(list1 is list3)? #False

因此,list1的改變不會影響到list2與list3。但是對于復雜一些的列表,例如嵌套列表、字典嵌套列表。淺拷貝與深拷貝兩者便展示出完全不同的結果。

import copy

list1 = [1,2,3,4,[5,6]]

print('list1的id:',id(list1))

print('list1第4個元素的id:',id(list1[4]))

#淺拷貝

list2 = list1.copy()

print(list2)

print('list2的id:',id(list2))

print('list2第4個元素的id:',id(list2[4]))

#深拷貝

list3 = copy.deepcopy(list1)

print(list3)

print('list3的id:',id(list3))

print('list3第4個元素的id:',id(list3[4]))

#改變list1中的元素

list1[2] = 7

list1[4][1] = 8

print('list1:',list1)

print('list2:',list2)

print('list3:',list3)

#運行結果

list1的id: 95979528

list1第4個元素的id: 96011592

[1, 2, 3, 4, [5, 6]]

list2的id: 40773832

list2第4個元素的id: 96011592 #子對象的id值一樣,表示淺拷貝沒有拷貝對象,只是使用了列表的引用

[1, 2, 3, 4, [5, 6]]

list3的id: 96023432

list3第4個元素的id: 40773704

list1: [1, 2, 7, 4, [5, 8]]

list2: [1, 2, 3, 4, [5, 8]] #父對象不變,子對象變

list3: [1, 2, 3, 4, [5, 6]] #父子對象都不改變

總結

以上是生活随笔為你收集整理的python深浅拷贝的底层理解_理解python中的深拷贝与浅拷贝的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。