您好,登錄后才能下訂單哦!
小編給大家分享一下python中sort()方法的cmp參數是什么,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
“如果希望元素能按照特定的方式進行排序(而不是sort函數默認的方式,即根據python的默認排序規則按升序排列元素),那么可以通過compare(x,y)的形式自定義比較函數。
compare(x,y)函數會在x<y時返回負數,在x>y時返回正數,如果x=y則返回0(根據你的定義)。
定義好該函數之后,就可以提供給sort方法作為參數了。內建函數cmp提供了比較函數的默認實現方式:
對于sort()方法,如果不傳入參數,默認cmp為None,即numbers.sort()=number,sort(cmp)=number.sort(cmp=None),我們可以做一個驗證:
如果傳入參數,numbers.sort(cmp=1),我們可以驗證一下,整型的參數可不可以:
代碼報錯:int對象不是一個callable,可調用對象。callable(object) 方法用來檢測對象是否可被調用,即是否是一個函數,如果是則調用該函數的值,賦值給cmp。
那么我們如何自定義一個比較函數呢?
其中的規律就是:兩兩比較,如果返回為正,則交換兩者的位置,即y在前x在后,否則x在前y在后。也可以這樣解釋,升序就是拿第一個數比對后面的數,降序就是拿最后一個數比對前面的數。
當然,也可以寫作numbers.sort(mycmp1),省略cmp。
我們還可以直接穿入匿名函數lambda:
另外,python3.x中取消了cmp參數,也不支持直接往sort()里面傳函數,但可以構造排序函數傳遞給key來實現。
以上是“python中sort()方法的cmp參數是什么”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。