Python的cmp函式究竟應該怎樣去理解?

時間 2021-06-06 18:28:10

1樓:楊健

排序的比較函式必須實現乙個全序關係(自反,反對稱,傳遞),該關係用R(a,b)表示,則依此排序函式排序後,其任意元素對對於任意i,>=)均滿足全序關係性質,故可以自然地作為比較函式。

,=,中任何乙個運算均可以由其餘兩者匯出(這裡是三分律,區別與雜湊使用的二分律,乙個常見錯誤是混用二分律和三分律的=) 如= := !,所以你的比較函式裡的else表示=由,前兩者自然匯出(這就蘊含了乙個陷阱,你很可能定義時直接使用三分支而未用else,這導致了由else自然匯出的=和你使用的=產生了矛盾,導致了排序無法正常執行,自然匯出的=實際上構成了乙個等價類,利用這條性質可以將有些問題轉化為排序問題。

2樓:「已登出」

當X與Y(順序不能換)的比較結果為-1時,表示X比Y"小"; 為1時表示X比Y"大"; 為0時表示X與Y(相等).

這個大小關係不一定是數字的大小, 而是你規定的大小.

sorted是從"小"到"大"排序的.

如果要反向排序, 有個更方便的方法, sorted([1,3,2], reverse=True)

python的range函式怎麼用?

IT野狐禪 生成器是Python的乙個特色功能 這種方式不是將資料事先生成到記憶體 比如range 1,9999999 它是通過生成器函式獲得序列資料值的 使用乙個生成乙個 目的 節約記憶體 學乙個技術一定要抓到key。學習生成器的key就是節約記憶體 其實你忘記個語法無所謂。當然初學還是把語法扣仔...

python使用裝飾器後,呼叫的函式return為什麼會失效?

紊莫 因為在python中,0就是none,可能是編譯器把返回的0值寫成了none,可以嘗試換乙個值或者不管,因為0和none基本上是互通的 還有一種辦法就是在func前面加return,直接返回他的返回值 import sys import time from selenium import we...

python怎麼求乙個函式的最值

意群 我來舉個窮舉法的例子。函式的功能為 x 2 def multi x y x 2 return y step 為嘗試的步進值 def find func,min max step 0.01 i min while min 執行結果如下 i1 func i 1 i0.99 func i 0.980...