(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函式有幾個返回值就排序幾次,先排序次要條件,後排序主要條件,用主要條件覆蓋次要條件,主要條件相同時,又不會改變之前排好的次要條件的相對位置,就實現了...