標籤:idt 複製 關係 作者 most image ima python png
不知道昨天那個科普你有沒有看懂,沒看懂也沒關係,畢竟現在只是在學基本文法。
今天我們要來講一下copy,fromkeys,get這三個方法。
我們先來看一下copy這個方法,copy這個方法有點特殊,我們在前面講過的複製的方法,只要修改複製後的值,被複製的值也會發生相應的改變,但是,在copy這個方法這裡,如果是實行替換的話,那麼被複製的值是不會被改變的,但如果實行的是刪除,被複製的值會被改變。我們來看一下對比代碼:
x = {‘name‘:‘Tom‘,‘phone‘:[‘123‘,‘456‘]}y = x.deepcopy()y[‘name‘] = ‘pony‘y[‘phone‘].remove(‘123‘)y#按斷行符號,得到的結果是:{‘name‘: ‘pony‘, ‘phone‘: [‘456‘]}x#按斷行符號,得到的結果是:{‘name‘: ‘Tom‘, ‘phone‘: [‘456‘]}
我們看到上面的代碼,很明顯,y是x的副本,當我們替換y中的值的時候,也就是把Tom改成pony,只有y中的Tom會發生改變,而x中的Tom並不會被改變。接著我們看一下remove操作,remove之後,x,y兩個字典的內容都被改變。那麼,我們有沒有什麼別的方法來防止在修改副本的時候,被複製值被修改?這個時候我們就需要引入deepcopy這個方法,deepcopy的使用方法和copy一樣,不過要在開頭加入from copy import deepcopy,deepcopy不修改被複製值。
接下來我們來看一下fromkeys。這個方法主要是用來建立一個字典用的,沒什麼特變的地方,我們來看一下代碼就好了:
{}.fromkeys([‘name‘,‘age‘])#按斷行符號,得到的結果是:{‘name‘: None, ‘age‘: None}
是不是一看到代碼就基本知道怎麼用了?fromkeys括弧裡面跟著的就是字典的鍵,用fromkeys建立的字典是沒有值的。
最後,我們來看一下get這個方法,這個方法的主要作用在於當你查詢字典中沒有的某個項時,字典不會報錯,會輸出一個None跟你說沒有這個項,我們來看一下範例程式碼:
x = {}print(x[‘name‘])#按斷行符號,得到的結果是:Traceback (most recent call last):# File "<stdin>", line 1, in <module>#KeyError: ‘name‘print(x.get(‘name‘,‘no‘))#按斷行符號,得到的結果是no
看上面第一段代碼,那個就是報錯的提示,然後你看一下第二段代碼中,得到的結果是no。這是我們在get方法裡面有定義說如果找不到那麼這個項的時候,就輸出no。如果你沒有定義的話,系統預設是輸出None。
好的,今天的內容就講到這裡啦~
(文章圖片若有侵權,請聯絡作者刪除)
同學,你的python~