Python3內建函式sorted

2022-05-25 09:18:12 字數 1605 閱讀 8948

排序也是在程式中經常用到的演算法。無論使用氣泡排序還是快速排序,排序的核心是比較兩個元素的大小。如果是數字,我們可以直接比較,但如果是字串或者兩個dict呢?直接比較數學上的大小是沒有意義的,因此,比較的過程必須通過函式抽象出來。

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

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

[-21, -12, 5, 9, 36]

此外,sorted()函式也是乙個高階函式,它還可以接收乙個key函式來實現自定義的排序,例如按絕對值大小排序:

>>> sorted([36, 5, -12, 9, -21], key=abs)

[5, 9, -12, -21, 36]

key指定的函式將作用於list的每乙個元素上,並根據key函式返回的結果進行排序。對比原始的list和經過key=abs處理過的list:

list = [36, 5, -12, 9, -21]

keys = [36, 5, 12, 9, 21]

然後sorted()函式按照keys進行排序,並按照對應關係返回list相應的元素:

keys排序結果 => [5, 9,  12,  21, 36]

| | | | |

最終結果 => [5, 9, -12, -21, 36]

我們再看乙個字串排序的例子:

>>> sorted(['bob', 'about', 'zoo', 'credit'])

['credit', 'zoo', 'about', 'bob']

預設情況下,對字串排序,是按照ascii的大小比較的,由於'z' < 'a',結果,大寫字母z會排在小寫字母a的前面。

現在,我們提出排序應該忽略大小寫,按照字母序排序。要實現這個演算法,不必對現有**大加改動,只要我們能用乙個key函式把字串對映為忽略大小寫排序即可。忽略大小寫來比較兩個字串,實際上就是先把字串都變成大寫(或者都變成小寫),再比較。

這樣,我們給sorted傳入key函式,即可實現忽略大小寫的排序:

>>> sorted(['bob', 'about', 'zoo', 'credit'], key=str.lower)

['about', 'bob', 'credit', 'zoo']

要進行反向排序,不必改動key函式,可以傳入第三個引數reverse=true

>>> sorted(['bob', 'about', 'zoo', 'credit'], key=str.lower, reverse=true)

['zoo', 'credit', 'bob', 'about']

Python3內建函式

1 兩個列表可以相加 collections.counter計數器,計算列表中每項出現的次數,並返回字典型別,其中元素作為key,其計數作為value。當所訪問的鍵不存在時,返回0,而不是keyerror 否則返回它的計數。其中負號表示降序 預設公升序 與reverse true相同 4 數值的除法...

Python3 內建函式

返回乙個數的絕對值。實參可以是整數或浮點數。如果實參是乙個複數,返回它的模。返回 x 的 y 次冪 如果 z 存在,則對 z 取餘 比直接pow x,y z計算更高效 兩個引數形式的pow x,y 等價於冪運算子 x y。引數必須為數值型別。對於混用的運算元型別,則適用二元算術運算子的型別強制轉換規...

Python3 內建函式

abs 函式 函式返回 x 數字 的絕對值 python dict 函式 dict 函式用於建立乙個字典。dict 建立空字典 dict a a b b t t 傳入關鍵字 dict zip one two three 1,2,3 對映函式方式來構造字典 dict one 1 two 2 three...