我敢以我的榮譽保證,用了它之後,你寫程式碼的效率可以蹭蹭地提升!
先普及模式匹配。
模式匹配即給定某種模式,用這種模式去檢查序列或字串是否符合這種模式,這種技術在自然語言處理中經常使用。
Pampy 是 Python 的一個模式匹配類別庫,一個只有150行的類別庫,該庫優雅、高效值得廣大Python的碼農加入自己基本開發堆疊中。
無獨有偶,程式還有一個同名的 Pampy.js 的 JavaScript 版本函式庫。
你如果有興趣,可以閱讀原始碼,將其照搬到更多的開發語言中。
安裝這個函式庫的方式也是老生常談了:
我們可以用_ 來匹配單一字元:
from pampy import _,match a=['a',1,'b',2,'c',3,'d',4] patter = ['a',1,'b',_,'c',3,'d',4] action=lambda x: f'b is: {x}' print(match(a,patter,action))
運行結果是:
從上面例子可以看出,實際上我們只是用_ 充當一個佔位符,當匹配的時候,找到這個佔位符對應的元素即可。
我們可以符合多層級的字典中的任一層級的key 或value:
from pampy import _, match person = { 'address': {'province': '湖北', 'city': '武汉', 'district': '东湖高新'}, 'name': '闲欢' } patter = {_: {_: '武汉'}} action = lambda k1, k2: ({'k1': k1, 'k2': k2}) print(match(person, patter, action))
運行結果是:
跟前一個範例類似,這裡使用_ 這個佔位符佔位,然後在action 裡面定位佔位符,即可輸出結果。
上面的例子,我們都是使用佔位符來佔位,但是佔位符只能匹配一個字符,下面的例子,我們將用HEAD 和TAIL 這兩個關鍵字來匹配開頭和結尾,他們可以批評任意多個字元:
from pampy import _,match,HEAD,TAIL a=['a',1,'b',2,'c',3,'d',4] patter = [HEAD,_,'b',2,'c',3,TAIL] action=lambda h,m,t: ({'head':h,'middle':m,'tail':t}) print(match(a,patter,action))
運行上面例子,結果是:
我們可以從結果看到,HEAD 匹配了一個字符,TAIL 匹配了兩個字符,輸出的時候,如果是多個字符,結果會以數組的方式給出。
Pampy 的例子都很簡單,大家一閱便知。透過看著幾個例子,是不是有種感覺:哇,還有這等神器!
當然,Pampy 的模式匹配不只這麼多種方式,還有更多方式有待大家去探索。
以上是這個Python神器,能讓你摸半天魚!的詳細內容。更多資訊請關注PHP中文網其他相關文章!