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

首頁 > 編程 > Python > 正文

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

2020-02-16 01:53:18
字體:
來源:轉載
供稿:網友

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]]]

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

淺拷貝

#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#發(fā)現(xiàn)lista和listb在內存中的地址有區(qū)別,#打印元素中的第一個元素的地址值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]]]#結果發(fā)現(xiàn),竟然沒有跟著lista一起改變,為什么呢,因為使用了淺拷貝唄#我們在打印下lista[0]和listb[0]的地址print id(lista[0]) #140666751466560print id(listb[0]) #140666751466536#會發(fā)現(xiàn)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]]]#發(fā)現(xiàn)修改lista[3][0]元素的值,listb[3][0]也會跟著改變

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

深拷貝

  #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]]]  #沒有受到任何影響

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

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 保德县| 博爱县| 青龙| 枣庄市| 马关县| 泾源县| 巴彦县| 肇庆市| 皋兰县| 胶州市| 乐山市| 徐水县| 禄劝| 大厂| 乐至县| 阳谷县| 阿巴嘎旗| 崇义县| 肇庆市| 阿克陶县| 峨眉山市| 乌兰浩特市| 额尔古纳市| 开化县| 工布江达县| 汝南县| 惠来县| 台前县| 祁门县| 大港区| 临泽县| 吴川市| 靖江市| 宁晋县| 德惠市| 平乐县| 达日县| 镇赉县| 五峰| 阜阳市| 丰原市|