日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Python字典中深淺拷貝與循環(huán)方式的示例分析-創(chuàng)新互聯(lián)

這篇文章主要介紹Python字典中深淺拷貝與循環(huán)方式的示例分析,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對(duì)這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長期合作伙伴,公司提供的服務(wù)項(xiàng)目有:主機(jī)域名、虛擬主機(jī)、營銷軟件、網(wǎng)站建設(shè)、龍?zhí)毒W(wǎng)站維護(hù)、網(wǎng)站推廣。本節(jié)內(nèi)容
  • 深淺拷貝

  • 循環(huán)方式

  • 字典常用方法總結(jié)

一、深淺拷貝列表、元組、字典(以及其他)

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

賦值(=)

賦值只是創(chuàng)建一個(gè)變量,該變量指向原來的內(nèi)存地址

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

 如圖所示:

Python字典中深淺拷貝與循環(huán)方式的示例分析

 淺拷貝(copy)

淺拷貝是指在內(nèi)存地址中,只拷貝出第一層的內(nèi)存的地址,所以拷貝變量和被拷貝變量的內(nèi)存地址是不一樣的(列表、元組和字典中的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

 如圖所示:

Python字典中深淺拷貝與循環(huán)方式的示例分析

注:因?yàn)闇\拷貝只拷貝了第一層,所以拷貝的變量和被拷貝的變量的第二層的列表的內(nèi)存地址是一樣的。

>>> import copy
>>> name1 = ['a','b',['m','n'],'c']
>>> name2 = copy.copy(name1)
>>> name1[0] = 'h'
>>> name1[2][0] = 'M'
#name1[2][0]的內(nèi)存地址和name2[2][0]內(nèi)存地址是一樣的
>>> 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
淺拷貝的三種表現(xiàn)形式:

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

2.用切片的方式:

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

 3.用列表自帶的方法:

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

深拷貝是指在內(nèi)存中將所有的數(shù)據(jù)重新創(chuàng)建一份。

注:排除最后一層,即python內(nèi)部對(duì)字符串和數(shù)字的優(yōu)化

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

 如圖所示:

Python字典中深淺拷貝與循環(huán)方式的示例分析

 注:因?yàn)樯羁截悤?huì)拷貝到最后一層的內(nèi)存地址,所以最后一層的內(nèi)存地址是不通

二、循環(huán)方式

方法1、

for key in info:
  print(key,info[key])

 方法2、

for k,v in info.items(): #會(huì)先把dict轉(zhuǎn)成list,數(shù)據(jù)量大時(shí)莫用
  print(k,v)

 小結(jié):

①方法1的效率比方法2的效率高很多

②方法1是直接通過key取value

③方法2是先把字典轉(zhuǎn)換成一個(gè)列表,再去取值

④當(dāng)數(shù)據(jù)量比較大的時(shí)候,用第二種方法時(shí),字典轉(zhuǎn)換成列表的這個(gè)過程需要花大量的時(shí)間老轉(zhuǎn)換,當(dāng)然數(shù)據(jù)量不大,沒有關(guān)系,效率差不多

字典常用方法

Python字典中深淺拷貝與循環(huán)方式的示例分析

以上是“Python字典中深淺拷貝與循環(huán)方式的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


本文標(biāo)題:Python字典中深淺拷貝與循環(huán)方式的示例分析-創(chuàng)新互聯(lián)
網(wǎng)頁鏈接:http://www.dlmjj.cn/article/csijps.html