Python list sort用法

python列表排序

簡單記一下python中List的sort方法(或者sorted內(nèi)建函數(shù))的用法。

關(guān)鍵字:

python列表排序 python字典排序 sorted

List的元素可以是各種東西,字符串,字典,自己定義的類等。

sorted函數(shù)用法如下:

Python代碼

sorted(data,?cmp=None,?key=None,?reverse=False)

其中,data是待排序數(shù)據(jù),可以使List或者iterator, cmp和key都是函數(shù),這兩個函數(shù)作用與data的元素上產(chǎn)生一個結(jié)果,sorted方法根據(jù)這個結(jié)果來排序。

cmp(e1, e2) 是帶兩個參數(shù)的比較函數(shù), 返回值: 負(fù)數(shù): e1 < e2, 0: e1 == e2, 正數(shù): e1 > e2. 默認(rèn)為 None, 即用內(nèi)建的比較函數(shù).

key 是帶一個參數(shù)的函數(shù), 用來為每個元素提取比較值. 默認(rèn)為 None, 即直接比較每個元素.

通常, key 和 reverse 比 cmp 快很多, 因為對每個元素它們只處理一次; 而 cmp 會處理多次.

通過例子來說明sorted的用法:

1. 對由tuple組成的List排序

Python代碼

>>>?students?=?[('john','A',15),?('jane','B',12),?('dave','B',10),]

用key函數(shù)排序(lambda的用法見 注釋1)

Python代碼

>>>?sorted(students,?key=lambdastudent?:?student[2])#?sort?by?age

[('dave','B',10),?('jane','B',12),?('john','A',15)]

用cmp函數(shù)排序

Python代碼

>>>?sorted(students,?cmp=lambdax,y?:?cmp(x[2],?y[2]))#?sort?by?age

[('dave','B',10),?('jane','B',12),?('john','A',15)]

用 operator 函數(shù)來加快速度, 上面排序等價于:(itemgetter的用法見 注釋2)

Python代碼

>>>from operator impor titemgetter,?attrgetter

>>>?sorted(students,?key=itemgetter(2))

用 operator 函數(shù)進(jìn)行多級排序

Python代碼

>>>?sorted(students,?key=itemgetter(1,2))#?sort?by?grade?then?by?age

[('john','A',15),?('dave','B',10),?('jane','B',12)]

2. 對由字典排序

Python代碼

>>>?d?=?{'data1':3,'data2':1,'data3':2,'data4':4}

>>>?sorted(d.iteritems(),?key=itemgetter(1),?reverse=True)

[('data4',4),?('data1',3),?('data3',2),?('data2',1)]


LEETCODE關(guān)聯(lián)題目

Given a non-empty array of integers, return thekmost frequent elements.

For example,

Given[1,1,1,2,2,3]and k = 2, return[1,2].

Note:

You may assumekis always valid, 1 ≤k≤ number of unique elements.

Your algorithm's time complexitymust bebetter than O(nlogn), wherenis the array's size.



最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容