Python中sort方法和sorted函數(shù)老猿在前面一些章節(jié)介紹過,具體語法及含義在此不再展開說明,但老猿在前面學(xué)習(xí)相關(guān)內(nèi)容時,只使用了簡單的案例,對這兩個方法的key參數(shù)沒有深入研究,總以為就是以前c語言排序算法中的cmp函數(shù)。今天在研究富比較方法的運用時才發(fā)現(xiàn)key根本不是cmp函數(shù),而是一個只針對比較元素自身的函數(shù),不像cmp函數(shù)是兩個對象之間比較。
經(jīng)查閱資料和測試,發(fā)現(xiàn)其實早期的Python版本中是提供了cmp函數(shù)的,其版本演進沿革如下:
Python2.1以前的排序比較方法只提供一個cmp方法,沒有lt等6個富比較方法, Python 2.1引入了富比較方法,Python3.4之后作廢了cmp方法。相應(yīng)地從Python2.4開始,list.sort() 和 sorted() 都增加了一個 ‘key' 參數(shù)用來在進行比較之前指定每個列表元素上要調(diào)用的函數(shù)。
為什么要這么處理呢?這是因為cmp方法本身也是針對對象的特定元素來進行比較的,直接使用特定元素的值更快捷、效率更高。
關(guān)于富比較方法的介紹請大家參考:
1、《第8.21節(jié) Python中lt、gt等 “富比較”(“rich comparison”)方法用途探究》
2、《第8.22節(jié) Python案例詳解:重寫 “富比較”方法控制比較邏輯》。
老猿Python,跟老猿學(xué)Python!
博客地址:https://blog.csdn.net/LaoYuanPython
請大家多多支持,點贊、評論和加關(guān)注!謝謝!