国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python基礎教程之淺拷貝和深拷貝實例詳解

2019-11-25 16:01:00
字體:
來源:轉載
供稿:網友

Python基礎教程之淺拷貝和深拷貝實例詳解

           網上關于Python的深拷貝和淺拷貝的文章很多,這里對三種拷貝進行比較并附實例,大家可以參考下

一般的復制

#encoding:utf-8#定義一個嵌套集合lista=[1,2,3,[4,5,6,[7,8,9]]]listb=lista#分別打印出 lista和listb的地址值print id(lista) #4511103096print id(listb) #4511103096#修改lista中的內容,listb中的內容也會跟著修改lista[0]=0print lista #[0, 2, 3, [4, 5, 6, [7, 8, 9]]]print listb #[0, 2, 3, [4, 5, 6, [7, 8, 9]]]

通過以上實踐會發現,復制操作就是將lista在內存中指向的地址,也讓listb指向他,本身并沒有在內存中創建地址。

淺拷貝

#encoding:utf-8#定義一個嵌套集合import copylista=[1,2,3,[4,5,6,[7,8,9]]]#使用copy模塊中copy方法listb=copy.copy(lista)print id(lista) #4396231640print id(listb) #4396231712#發現lista和listb在內存中的地址有區別,#打印元素中的第一個元素的地址值print id(lista[0])#140666751466536print id(listb[0])#140666751466536#元素的地址值是一樣的,是不是意思就是,改變lista中的第一個元素,# listb中的也要改變呢lista[0]=0print lista #[0, 2, 3, [4, 5, 6, [7, 8, 9]]]print listb #[1, 2, 3, [4, 5, 6, [7, 8, 9]]]#結果發現,竟然沒有跟著lista一起改變,為什么呢,因為使用了淺拷貝唄#我們在打印下lista[0]和listb[0]的地址print id(lista[0]) #140666751466560print id(listb[0]) #140666751466536#會發現lista[0]重新指向內存中的其他地址#這時候可以通過以上的方法,修改lista[3],lista[3]也是一個listprint id(lista[3])#4499779240print id(listb[3])#4499779240#修改lista[3]中第一個元素呢lista[3][0]=0print lista #[0, 2, 3, [0, 5, 6, [7, 8, 9]]]print listb #[0, 2, 3, [0, 5, 6, [7, 8, 9]]]#發現修改lista[3][0]元素的值,listb[3][0]也會跟著改變

根據以上實踐說明,淺拷貝對對象中對象沒有拷貝。

深拷貝

  #encoding:utf-8  #定義一個嵌套集合  import copy  lista=[1,2,3,[4,5,6,[7,8,9]]]  #深拷貝功能是在淺拷貝上做的加強,所以具備淺拷貝的功能  listb=copy.deepcopy(lista)  lista[3][0]=0  print lista #[1, 2, 3, [0, 5, 6, [7, 8, 9]]]  print listb #[1, 2, 3, [4, 5, 6, [7, 8, 9]]]  #深拷貝會解決修改lista[3][0]值不會影響listb中的值  #再來修改下第三層列表中元素是不是也完成拷貝  lista[3][3][0]=0  print lista #[1, 2, 3, [0, 5, 6, [0, 8, 9]]]  print listb #[1, 2, 3, [4, 5, 6, [7, 8, 9]]]  #沒有受到任何影響

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 永州市| 扎鲁特旗| 古浪县| 沈阳市| 东明县| 黑河市| 左权县| 开封市| 东至县| 石门县| 大方县| 泾川县| 来宾市| 肇源县| 鄂伦春自治旗| 壶关县| 黄骅市| 福泉市| 蒙阴县| 繁峙县| 保山市| 永康市| 澎湖县| 台湾省| 凌海市| 大悟县| 普安县| 开远市| 中牟县| 漳浦县| 抚宁县| 靖安县| 新乡县| 兴城市| 北碚区| 北海市| 金溪县| 麦盖提县| 民县| 额尔古纳市| 喀什市|