python 自定義排序函式

2021-09-08 18:55:29 字數 1368 閱讀 7141

自定義排序函式

python內建的 sorted()函式可對list進行排序:

>>>sorted([36, 5, 12, 9, 21])

[5, 9, 12, 21, 36]

但 sorted()也是乙個高階函式,它可以接收乙個比較函式來實現自定義排序,比較函式的定義是,傳入兩個待比較的元素 x, y,如果 x 應該排在 y 的前面,返回 -1,如果 x 應該排在 y 的後面,返回 1。如果 x 和 y 相等,返回 0。

因此,如果我們要實現倒序排序,只需要編寫乙個reversed_cmp函式:

defreversed_cmp(x, y):

if x >y:

return -1

if x return 1

return

0這樣,呼叫 sorted() 並傳入 reversed_cmp 就可以實現倒序排序:

>>> sorted([36, 5, 12, 9, 21], reversed_cmp)

[36, 21, 12, 9, 5]

sorted()也可以對字串進行排序,字串預設按照ascii大小來比較:

>>> sorted(['

bob', '

about

', '

zoo', '

credit'])

['credit

', '

zoo', '

about

', '

bob']'

zoo'排在'

about

'之前是因為'

z'的ascii碼比'a'

小任務對字串排序時,有時候忽略大小寫排序更符合習慣。請利用sorted()高階函式,實現忽略大小寫排序的演算法。

輸入:[

'bob

', '

about

', '

zoo', '

credit']

輸出:[

'about

', '

bob', '

credit

', '

zoo'

]def

cmp_ignore_case(s1, s2):

t1=s1.lower();

t2=s2.lower();

if(t1>t2):

return 1

if(t1==t2):

return

0

return -1

print sorted(['

bob', '

about

', '

zoo', '

credit

'], cmp_ignore_case)

python中自定義排序函式

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

自定義排序函式

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

自定義排序函式

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