為什么Python中sort方法和sorted函數調用廢棄使用cmp參數

Python中sort方法和sorted函數老猿在前面一些章節介紹過,具體語法及含義在此不再展開說明,但老猿在前面學習相關內容時,只使用了簡單的案例,對這兩個方法的key參數沒有深入研究,總以為就是以前c語言排序算法中的cmp函數。今天在研究富比較方法的運用時才發現key根本不是cmp函數,而是一個只針對比較元素自身的函數,不像cmp函數是兩個對象之間比較。
經查閱資料和測試,發現其實早期的Python版本中是提供了cmp函數的,其版本演進沿革如下:
Python2.1以前的排序比較方法只提供一個cmp方法,沒有lt等6個富比較方法, Python 2.1引入了富比較方法,Python3.4之后作廢了cmp方法。相應地從Python2.4開始,list.sort() 和 sorted() 都增加了一個 ‘key' 參數用來在進行比較之前指定每個列表元素上要調用的函數。
為什么要這么處理呢?這是因為cmp方法本身也是針對對象的特定元素來進行比較的,直接使用特定元素的值更快捷、效率更高。

關于富比較方法的介紹請大家參考:
1、《第8.21節 Python中ltgt等 “富比較”(“rich comparison”)方法用途探究》
2、《第8.22節 Python案例詳解:重寫 “富比較”方法控制比較邏輯》

老猿Python,跟老猿學Python!
博客地址:https://blog.csdn.net/LaoYuanPython

請大家多多支持,點贊、評論和加關注!謝謝!

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容