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

首頁 > 編程 > Python > 正文

Python字典深淺拷貝與循環方式方法詳解

2020-02-15 21:18:49
字體:
來源:轉載
供稿:網友

本節內容

深淺拷貝 循環方式 字典常用方法總結

一、深淺拷貝

列表、元組、字典(以及其他)

對于列表、元組和字典而言,進行賦值(=)、淺拷貝(copy)、深拷貝(deepcopy)而言,其內存地址是變化不通的。

賦值(=)

賦值只是創建一個變量,該變量指向原來的內存地址

>>> name1 = ['a','b',['m','n'],'c']>>> name2 = name1#輸出結果,兩個內存地址是一樣的>>> print(id(name1),',',id(name2))50077256 , 50077256

 如圖所示:

 淺拷貝(copy)

淺拷貝是指在內存地址中,只拷貝出第一層的內存的地址,所以拷貝變量和被拷貝變量的內存地址是不一樣的(列表、元組和字典中的copy()方法都是淺拷貝)

>>> import copy>>> name1 = ['a','b',['m','n'],'c']#淺copy>>> name2 = copy.copy(name1)>>> print(name1,',',id(name1))['a', 'b', ['m', 'n'], 'c'] , 50228296>>> print(name2,',',id(name2))['a', 'b', ['m', 'n'], 'c'] , 50920008#修改列表中的元素>>> name1[0] = 'h'>>> name1[2][0] = 'M'>>> print(name1,',',id(name1))['h', 'b', ['M', 'n'], 'c'] , 50228296>>> print(name2,',',id(name2))['a', 'b', ['M', 'n'], 'c'] , 50920008

 如圖所示:

注:因為淺拷貝只拷貝了第一層,所以拷貝的變量和被拷貝的變量的第二層的列表的內存地址是一樣的。

>>> import copy>>> name1 = ['a','b',['m','n'],'c']>>> name2 = copy.copy(name1)>>> name1[0] = 'h'>>> name1[2][0] = 'M'#name1[2][0]的內存地址和name2[2][0]內存地址是一樣的>>> print(name1,id(name1),id(name1[2][0]))['h', 'b', ['M', 'n'], 'c'] 50209800 13820904>>> print(name2,id(name2),id(name2[2][0]))['a', 'b', ['M', 'n'], 'c'] 50891144 13820904

淺拷貝的三種表現形式:

1.用copy模塊中的copy方法(跟上面的一樣)

2.用切片的方式:

>>> name1 = ['a','b',['m','n'],'c']>>> name2 = name1[:]

 3.用列表自帶的方法:

>>> name1 = ['a','b',['m','n'],'c']>>> name2 = name1.copy()

深拷貝(deepcopy)

深拷貝是指在內存中將所有的數據重新創建一份。

注:排除最后一層,即python內部對字符串和數字的優化

>>> import copy>>> name1 = ['a','b',['m','n'],'c']#深拷貝>>> name2 = copy.deepcopy(name1)>>> print(name1,',',id(name1))['a', 'b', ['m', 'n'], 'c'] , 50142472>>> print(name2,',',id(name2))['a', 'b', ['m', 'n'], 'c'] , 50942280>>> name1[0] = 'h'>>> name1[2][0] = 'M'>>> print(name1,id(name1),id(name1[2][0]))['h', 'b', ['M', 'n'], 'c'] 50142472 10937320>>> print(name2,id(name2),id(name2[2][0]))['a', 'b', ['m', 'n'], 'c'] 50942280 4896280            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 西充县| 合江县| 丰顺县| 奎屯市| 伊春市| 和静县| 蒙自县| 布尔津县| 简阳市| 宁德市| 呼图壁县| 张家川| 兴山县| 同仁县| 云安县| 汉阴县| 广灵县| 夏津县| 贡觉县| 拜城县| 依兰县| 无为县| 东安县| 百色市| 大余县| 黎川县| 涞水县| 综艺| 安新县| 南涧| 合作市| 易门县| 京山县| 二连浩特市| 永新县| 榕江县| 肃南| 南皮县| 宜良县| 江北区| 铜鼓县|