91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何進行Python字典的消除繁瑣的if判斷

發布時間:2021-10-09 18:04:24 來源:億速云 閱讀:157 作者:柒染 欄目:大數據

本篇文章為大家展示了如何進行Python字典的消除繁瑣的if判斷,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

根據不同的條件進行不同的計算或操作,是很常見的需求。Python 有 if 語句可以實現。但是一旦分支很多,多個 if 就是使你眼花繚亂。

我們有許多技巧(套路)來簡化這一過程。我會一連幾篇文章,從簡單到復雜,教你如何理解和應用這些技巧。

動態調用不同的函數

先看數據:

如何進行Python字典的消除繁瑣的if判斷  
  • 列[計算方式],決定了列[調整]的計算結果

每一種計算方式如下:

如何進行Python字典的消除繁瑣的if判斷  


看過我之前文章【為什么你總是學不會Python,入門Python的4大陷阱ython,因為你全掉坑了】的小伙伴已經學聰明了,為每一種計算單獨定義了函數:

如何進行Python字典的消除繁瑣的if判斷  

但是,該怎么調用這些函數呢?

"很簡單呀,判斷,然后調用":

如何進行Python字典的消除繁瑣的if判斷  
  • 行9:為了防止出現遺漏的計算方式

這看起來不錯,但是,每新增一種方式,就要在這里追加一個判斷,一旦分支很多,這里的代碼就會非常冗長:

如何進行Python字典的消除繁瑣的if判斷  

為什么我一直讓每一塊代碼盡可能簡短?

因為我們每次處理一個獨立小問題會比處理大問題要高效得多,大問題意味著涉及很多小問題。同時解決多個小問題,會讓我們的大腦短路。


 

單獨聲明映射關系

如果我們可以這樣子定義計算方式與函數的關系,那就很舒服了:

如何進行Python字典的消除繁瑣的if判斷  

"這看著有點眼熟,不就是字典嗎?"

對,字典就是用來表達這種一對一關系的最佳結構。

你可以把字典當作是一個過目不忘(死記硬背)的記憶高手,只要他過一遍數據之后,你給他一個 key 值,他能馬上找出對應的 value 值給你。

于是,我們可以把計算方式與定義的每個函數給他記憶:

如何進行Python字典的消除繁瑣的if判斷  

接下來,真正處理每一行數據的時候,只需要讓他(字典)取出函數,然后調用即可:

如何進行Python字典的消除繁瑣的if判斷  
  • 行2-4:特別要注意,字典的 value 我們只是給了函數名字,千萬別在后面加括號,括號是表示執行函數。現在我們不需要執行函數呢

  • 調用的時候,別忘記給函數傳入需要計算的指標

  • 不僅代碼簡單了,如果你有留意左下角的運行時間,你會發現這種方式比之前的方式提速了

現在我們的代碼挺不錯,如果數據中出現了新的計算方式,但我們忘記加入字典,那么代碼運行就會報錯:

如何進行Python字典的消除繁瑣的if判斷  
  • 行4:注釋掉,相當于我們忘記定義計算方式C

  • 可以看到錯誤信息,能讓我們馬上聯想到原因

"一舉兩得,太完美了!"

但是,如果你跟我學習 pandas ,就會知道,pandas 中盡可能避免自己遍歷處理數據。

pandas 的簡潔程度與計算效率不是我們自己遍歷處理可以比得過。


 

pandas 處理方式真的就完美?

這個例子中,每一種的計算方式的區別僅僅在于后面的系數:

如何進行Python字典的消除繁瑣的if判斷  

這種情況下,其實我們可以先批量把每一行對應的系數取出來,然后直接計算:

如何進行Python字典的消除繁瑣的if判斷  
  • 注意執行時間,又提速了

別以為這只是 pandas 把 for 遍歷給你寫了而已,他是基于 numpy 的,而numpy處理時都是基于 c++ 的調用,性能非常快速

這種方式其實也有他的缺點:

  1. Series.map 方法的確做了字典取值做的事情,但是在他找不到key時,是不會報錯的。我們需要后續通過判斷 nan 來檢查

  2. 有時候計算邏輯沒有這么簡單,比如需要看銷量是否超過同地區的平均值做出不同的計算分支。這時候使用 pandas 的方式就會感覺邏輯被分散(下一節我們來看看這種情況下的處理)

"那么,之前的字典聲明方式,是不是就是這種場景下最通用的方式?"


 

思考題

用字典聲明對應關系其實已經非常好了,但是如果能在定義函數的地方上直接標記對應關系,那么也挺好:

如何進行Python字典的消除繁瑣的if判斷  
  • 不再需要定義字典關系了

怎么可以做到這種效果呢?有興趣的小伙伴不妨試試。

上述內容就是如何進行Python字典的消除繁瑣的if判斷,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

威海市| 广西| 乌拉特中旗| 阳春市| 通山县| 馆陶县| 蓬安县| 平武县| 织金县| 东至县| 肇东市| 镇雄县| 长乐市| 隆子县| 九江市| 麦盖提县| 利津县| 聂拉木县| 苏尼特右旗| 饶阳县| 来凤县| 邵阳县| 民乐县| 千阳县| 赤城县| 隆林| 满洲里市| 沾化县| 苍山县| 鲁山县| 通化县| 林甸县| 财经| 阆中市| 万安县| 黑龙江省| 阿拉善盟| 合作市| 金华市| 呼图壁县| 巴东县|