<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          牛逼,Python3竟然內(nèi)置找茬神器!一起來找茬吧!

          共 2664字,需瀏覽 6分鐘

           ·

          2021-04-14 09:27


          點上方“菜鳥編程大本營”,選擇“星標(biāo)

          原創(chuàng)干貨,第一時間送達(dá)

          對于“大家來找茬”這個游戲而言,小伙伴們肯定不會陌生,找茬游戲?qū)τ诖蠹业哪托暮图?xì)心是一個非常大的考驗。對于python程序來說,也會遇到類似于找茬游戲的問題。例如尋找兩個列表中不同的元素內(nèi)容。

          好在python3中存在一個內(nèi)置庫,來幫助我們解決該類問題,今天,小編就為大家介紹這個小巧但是卻十分好用的python3內(nèi)置庫——difflib


          01.difflib 庫介紹

          difflib 庫是python3的一個內(nèi)置庫,因此大家不需要通過pip來進(jìn)行安裝,直接就可以在程序中調(diào)用difflib 庫,并進(jìn)行使用。


          02.difflib 的使用
          那么difflib庫有哪些方面的應(yīng)用呢?我們通過以下的四個實際應(yīng)用中常見的問題進(jìn)行展開。
          • 尋找兩個列表中不同的元素
          • 準(zhǔn)確指示元素間的差異
          • 進(jìn)行準(zhǔn)確度的匹配
          • 字符串轉(zhuǎn)換

          1).尋找兩個列表中不同的元素

          在實際的應(yīng)用中,經(jīng)常會遇到找到兩個列表中不同的元素,如果列表元素少的話,我們可以通過人工的方式進(jìn)行篩查,但是如果元素較多,我們可以通過下圖的程序進(jìn)行篩查。

          上圖程序中,通過兩個for循環(huán)來篩查兩個列表中的元素,互相篩查出來兩個列表中的不同元素內(nèi)容。difflib 可以利用一行程序來實現(xiàn)上述的功能,并且在結(jié)果的輸出中更加美觀。

          程序通過調(diào)用difflib 庫的context_diff函數(shù),一行代碼便可以給兩個列表進(jìn)行“找茬”處理。在結(jié)果的展示中,可以看到,context_diff函數(shù)輸出的結(jié)果更加的清晰明確,***1,5***中,1和5表示的是傳入第一個列表中的元素而在第二個列表中不存在。

          同時在元素前面利用嘆號進(jìn)行標(biāo)定。無論從程序的編寫還是結(jié)果的展示方面,difflib 庫都給出了很好的解答。


          2).準(zhǔn)確指示元素間的差異

          前面的操作還只是簡單的篩查出來,不同列表之間元素的區(qū)別,difflib 還能夠更進(jìn)一步,直接找到不同元素之間的差異性,如下圖所示:

          上圖中,通過ndiff函數(shù)來尋找兩個列表中,不同英文單詞的細(xì)節(jié)差異,輸出結(jié)果中,-號表示的是在第一個列表中存在,但是在第二個列表中沒有的元素,+號表示在第一個列表中不存在,但是在第二個列表中存在的元素。
          對比peak和peek,可以發(fā)現(xiàn),第三個元素是不相同的,因此在結(jié)果中通過^號來指出存在差異的字母位置。


          3).進(jìn)行準(zhǔn)確度的匹配

          讓我們更進(jìn)一步的來對difflib 庫進(jìn)行探索,利用準(zhǔn)確度匹配的方式來尋找最接近的單詞。在日常的程序編寫過程中,大家可能會將main不小心的寫為mian。利用difflib 庫中的get_close_matches函數(shù),可以糾正這樣的錯誤輸入,如下圖所示:

          上述程序中,通過get_close_matches函數(shù),可以匹配得到與mian最為接近的單詞是main。get_close_matches函數(shù)中給出的cutoff參數(shù),控制著匹配的嚴(yán)格程度,它的值介于0到1之間,cutoff的值越大,表示匹配程度越嚴(yán)格,如果設(shè)置為1時,則必須單詞完全一致才能匹配,否則就會返回空列表。利用get_close_matches函數(shù),可以完成單詞之間相似度的匹配。


          4).字符串轉(zhuǎn)換

          無論在實際的應(yīng)用,抑或是筆試算法的考察中,都會遇到一類問題,就是字符串的轉(zhuǎn)換問題,例如,如何將字符串“welcome to python program"轉(zhuǎn)換成”welcome to follow python subscription“。利用difflib庫中的SequenceMatcher類,就可以完成字符串的轉(zhuǎn)換。

          上圖的程序中,通過調(diào)用SequenceMatcher類來完成將字符串str1轉(zhuǎn)換成str2的過程,其中action對應(yīng)的是對于str1的操作動作,equal表示兩個字符串相同,不用改變,insert表示在str1中進(jìn)行插入,replace表示字符串的替換,位置表示需要改變的字符串的位置。按照輸出結(jié)果的指示進(jìn)行操作,就可以將str1轉(zhuǎn)換為str2。


          03.總結(jié)
          以上內(nèi)容就是小編今天為大家?guī)淼年P(guān)于difflib 庫的內(nèi)容分享,在日常的學(xué)習(xí)中,difflib庫可以幫助我們快速的進(jìn)行列表內(nèi)容的查重,單詞的更改和替換。
          提升開發(fā)效率,大家可以按照上面的內(nèi)容,更加深入的學(xué)習(xí)difflib庫的內(nèi)容。
          歡迎大家在留言區(qū)吱一聲,覺得今天的分享內(nèi)容有用的話,記得給個三連哦!


          推薦閱讀:

          入門: 最全的零基礎(chǔ)學(xué)Python的問題  | 零基礎(chǔ)學(xué)了8個月的Python  | 實戰(zhàn)項目 |學(xué)Python就是這條捷徑


          干貨:爬取豆瓣短評,電影《后來的我們》 | 38年NBA最佳球員分析 |   從萬眾期待到口碑撲街!唐探3令人失望  | 笑看新倚天屠龍記 | 燈謎答題王 |用Python做個海量小姐姐素描圖 |


          趣味:彈球游戲  | 九宮格  | 漂亮的花 | 兩百行Python《天天酷跑》游戲!


          AI: 會做詩的機(jī)器人 | 給圖片上色 | 預(yù)測收入 | 碟中諜這么火,我用機(jī)器學(xué)習(xí)做個迷你推薦系統(tǒng)電影


          年度爆款文案


          點閱讀原文,領(lǐng)廖雪峰大佬的資料包!

          瀏覽 37
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产精品久久久久久久午夜 | 国产一级一片免费播放 | 精品无码少妇一区二区三区 | 色婷婷福利 | 秋霞丝鲁片一区二区三区手机在绒免 |