Python sorted排序 key擴充套件使用

2021-09-24 05:49:38 字數 1912 閱讀 1889

(1)內建排序函式

(2)reversed操作

(3)擴充套件用法key

當我們要對一串數字或者字母,進行大小比較排序時,如果少數個我們可以自行排序,但是當數字多達幾十個,甚至幾百個時,人為排序就會使得效率低下,甚至有可能出錯。內建函式sorted()就解決了這一問題。

例項解釋:

#為表排序

>>>lst = [5, 3, 7, 0]

>>>print(sorted(lst))

[0, 3, 5, 7] #輸出排好序的新錶

#為元組排序

>>>tup = (5, 3, 7, 0)

>>>print(sorted(tup))

[0, 3, 5, 7] #同樣輸出排好序的表

#為字典排序

>>>dic =

>>>print(sorted(dic))

['a', 's'] #輸出字典關鍵字的表,字母根據asicc碼進行排序,單詞根據首字母以此往後比較

#表的sort()使用

>>>lst = [5, 3, 7, 0]

>>>lst.sort() #lst.sort()是對列表的操作,直接呼叫print(lst.sort()),返回none

>>>print(lst)

[5, 3, 7, 0] #呼叫print(lst)輸出

注意:

例項解釋:

#反轉列表

>>>lst = [5, 3, 7, 0]

>>>print(reversed(lst))

##返回的是乙個迭代器

>>>for i in reversed(lst):

print(i)07

35

####其他序列情況類似,再次不一一展示

#使用reverse()進行反轉

>>>print(lst.reverse())

none #類似於sort(),因為是操作,直接輸出返回none

>>>lst.reverse()

>>>print(lst)

[0, 7, 3, 5]

#reverse + sort 使用

>>>lst.sort(reverse = true) #此時為 > 關係排序,預設為false

>>>print(lst)

[7, 5, 3, 0]

插在中間的小結:

sorted 和 reversed 可以用於任何序列物件

reverse操作只能用於可變序列物件

sort操作只能用於表物件

python2.4之後,list.sort() 和 sorted() 都增加了key 關鍵字引數用來進行在指定位置上的比較。

例項解釋:

#二元組(k,v)關於v的 < 關係進行排序,再根據 k 的 > 關係進行排序

>>>s = [(3, 7), (5,0), (9,7), (4,1)]

>>>print(sorted(s, key = lambda x : (x[1], -x[0])))

[(5, 0), (4, 1), (9, 7), (3, 7)]

呼叫key的時候我們定義了乙個lambda函式,他的使用過程是:

獲取s中的乙個元組作為實參呼叫

x[1]表示改元組中下標為1的元素,即v

x[0]類似,表示元組中小標為0的元素,即k

負號 - 表示按 > 關係排序

x[1], -x[0] 的位置關係表示先將s中的所有元組按x[1]的 < 關係排序,再按x[0]的 > 關係排序

字典可以呼叫dic.item()轉換成二元組使用,類似的三元組等都可以通過關鍵字key按指定位置上的元素排序。

python sorted函式對元組排序

按照二元組的其中乙個元素排序 print degree sequence h.degree h degree sequence sorted n,d for n,d in h.degree reverse false print this is h degree sequence in functi...

python sorted對列表和字典排序

sorted函式引數 sorted data,key none,reverse false 其中,data是待排序資料,可以是list或者iterator,cmp和key都是函式,這兩個函式作用於data的元素上產生乙個結果,sorted方法根據這個結果來排序。key 是帶乙個引數的函式,用來為每個...

python sorted函式多條件排序是怎麼回事

首先,要知道sorted 內部實現使用了歸併排序,而歸併排序是穩定的排序,就是說當元素比不出大小時,其相對位置是不變的。那麼,利用穩定排序的特性,key函式有幾個返回值就排序幾次,先排序次要條件,後排序主要條件,用主要條件覆蓋次要條件,主要條件相同時,又不會改變之前排好的次要條件的相對位置,就實現了...