python中排序方法的自定義

2021-08-06 02:19:19 字數 668 閱讀 9425

牛客網上有個數串的題目:

給你若干個正整數,如:12 34 3

將他們組合在一起構成最大整數,如:34312

因為這幾個整數在輸入時以空格分開,經過numstr = raw_input()讀進去後是字串

numlist = numstr.split() #切割成列表

設兩個整數為a,b;若ab>ba,則a在前b在後;反之b在前a在後:

通過這種判斷來完成numlist裡面的排序

1.可以寫個氣泡排序函式

2,利用sort函式:

numlist.sort(cmp)

預設情況下,cmp是將numlist中相鄰兩個元素大小做比較,若返回正值,則交換兩個元素位置,反之不交換位置。直到返回值不再發生變化。

這裡我們所需要的比較方法不同於預設情況:所以要自己定義cmp函式:

def newcmp(x,y):#這裡x,y均為字串,從大往小排列

if  int(x +y) > int(y+x):

return -1

return 1

然後numlist(newcmp)即可完後排序

最後print int(''.join(numlist))

python 自定義排序

我們都知道python中有兩種排序的方法,原地排序的x.sort 和不改變原列表有返回值的sorted x 自定義排序函式 先不關心其實原地排序還是有返回值的排序,研究其內部的排序原理,其內部是根據什麼排序的呢,預設的排序方法是內建的cmp函式 對於cmp x,y 如果想要x排在y前面那麼返回乙個負...

python 自定義排序函式

自定義排序函式 python內建的 sorted 函式可對list進行排序 sorted 36,5,12,9,21 5,9,12,21,36 但 sorted 也是乙個高階函式,它可以接收乙個比較函式來實現自定義排序,比較函式的定義是,傳入兩個待比較的元素 x,y,如果 x 應該排在 y 的前面,返...

python 自定義內建方法

定義乙個新型別的元組,對於傳入的可迭代物件,我們只保留int型別且值大於0的元素。python中有內建的元組型別,tuple型別。自己也可以自定義乙個方法型別,class inttuple tuple 重寫父類的構造方法 def init self,iterable iterable裡面的元素 為整...