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中lt、gt等 “富比較”(“rich comparison”)方法用途探究》
2、《第8.22節 Python案例詳解:重寫 “富比較”方法控制比較邏輯》。
老猿Python,跟老猿學Python!
博客地址:https://blog.csdn.net/LaoYuanPython
請大家多多支持,點贊、評論和加關注!謝謝!