如何理解python中的cmp_to_key()函數


cmp_to_key()

在functools包里的函數,將老式的比較函數(cmp function)轉化為關鍵字函數(key function)。

與接受key function的工具一同使用(如 sorted(), min(), max(), heapq.nlargest(), itertools.groupby())。該函數主要用來將程序轉成 Python 3 格式的,因為 Python 3 中不支持比較cmp()。

sorted(iterable,key = functools.cmp_to_key(locale.strcoll))

cmp()與key()的不同

cmp(x,y)是可調用的,接受兩個參數,比較這兩個參數並根據他們的大小關系返回負值、零或正值中的某一個。

如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1。

更具體些,-1在排序中代表不改變x,y位置,1代表變成y,x位置。

比如

nums = ["1","10","2","3"]
sorted(nums,cmp(lambda x,y:int(x+y)-int(y+x)))   
---->["10","1","2","3"]

key()也是可調用的,接受一個參數,同時返回一個可以用作排序關鍵字的值。

nums = ["1","10","2","3"]
key = functools.cmp_to_key(lambda x,y:int(x+y)-int(y+x)) 
sorted(nums,key = key)   
----->["10","1","2","3"]

這個方法比較老了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM