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

歡迎訪問 生活随笔!

生活随笔

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

python

python_深浅拷贝

發布時間:2024/8/26 python 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python_深浅拷贝 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、賦值:

1 list_1=[['a','b'],1,2] 2 list_2=list_1 3 4 print(list_1) 5 print(list_2)>>>[['a', 'b'], 1, 2] >>>[['a', 'b'], 1, 2]

?

在python3中賦值操作其實就是對象的應用,如上邊的例子list_1與list_2這倆變量指向的都是同一塊內存地址,也就是說list_2并沒有重新開辟一塊屬于自己內存空間。

(通過id( )函數可以查看對象的內存地址)

1 print(id(list_1)) 2 print(id(list_2))

>>>1656445373192
>>>1656445373192

?

共同指向同一個內存地址(1656445373192),如果把這塊內存空間看成一個房間的話,那就是給這個房間找了兩個主人,房間里的所有東西屬于兩人的公共財產,同進退,共生死!

1 list_1=[['a','b'],1,2] 2 list_2=list_1 3 4 list_2[0][0]="aaa" 5 list_1[2]=222 6 7 print(list_1) 8 print(list_2) >>>[['aaa', 'b'], 1, 222]
>>>[['aaa', 'b'], 1, 222]
10 del list_1 #deL函數只能刪除變量名,對內存地址不做操作 11 print(list_2)
>>>[['aaa', 'b'], 1, 222]

11 list_2.clear() #clear()函數不刪除變量名,但會清除對應的內存空間
12 print(list_1)
>>>[]

?

?

2、淺拷貝

1 list_1=[['a','b'],1,2] 2 3 #淺拷貝的三種形式,結果是一樣的 4 list_2=list_1.copy() 5 list_2=list_1[:] 6 7 import copy 8 list_2=copy.copy(list_1)

?

淺拷貝之所以稱為淺拷貝,是它僅僅只拷貝了一層

1 list_1=[['a','b'],1,2] 2 list_2=list_1.copy() 3 4 list_2[0][0]="aaa" 5 list_2[2]=222 6 print(list_1) 7 print(list_2)
>>>[['aaa', 'b'], 1, 2]
>>>[['aaa', 'b'], 1, 222]

?

如圖所說:list_2=list_1.copy() 其實等于 list_2=[[000123],1,2]。也就是說只有小列表中的元素是兩人的公共財產(好比倆人的孩子),1和2 賦予各自的私有財產。

3、深拷貝

1 list_1=[['a','b'],1,2] 2 3 import copy 4 list_2=copy.deepcopy(list_1) 5 6 list_2[0][0]="aaa" 7 list_2[2]=222 8 9 print(list_1) 10 print(list_2)
>>>[['a', 'b'], 1, 2]
>>>[['aaa', 'b'], 1, 222]

?

深拷貝就比較直接了,就是很單純的很粗暴的克隆一份數據出來自己玩,自己想咋作就咋作,跟別人無關。

?

4、拷貝的警告  

  1、對于非容器類型,如數字,字符,以及其它“原子”類型,沒有拷貝一說。產生的都是原對象的引用。

  2、如果元組變量值包含原子類型對象,即使采用了深拷貝,也只能得到淺拷貝。

?

轉載于:https://www.cnblogs.com/Adairye/p/8570929.html

總結

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

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