sorted()方法
sorted()可用於任何一個可迭代物件。
原型為sorted(iterable, cmp=None, key=None, reverse=False)
iterable:一個可迭代物件;
cmp:用於比較的函式,比較什麼由key決定;
key:用列表元素的某個屬性或函式進行作為關鍵字,有預設值,迭代集合中的一項;
reverse:排序規則. reverse = True 降序 或者 reverse = False 升序,有預設值。
(1)cmp引數
cmp接受一個函式,如
def f(a,b)
return a-b
如果a邏輯小於b,函式返回負數;a等於b,函式返回0;a大於b,函式返回正數。
但是在python3中,cmp引數被淘汰了。但是可以使用key引數實現它的功能,本文後面會有介紹。
(2)key引數
引數key的使用通常配合lambda,這是一個隱函式,使用要按照固定格式:
例如可迭代物件的中的元素是一個元組:key = lambda x:x[0],意思按每一個元組的第0個元素排序。
當然如果可迭代物件中放的是字典,那填上它的鍵就可以按鍵對應的值進行排序。
例如:
order=[{`no`:1,`age`:18},{`no`:3,`age`:19},{`no`:2,`age`:20}] order = sorted(order,key=lambda x:x[`no`]) print(order) #輸出[{`no`: 1, `age`: 18}, {`no`: 2, `age`: 20}, {`no`: 3, `age`: 19}]
key中還可以使用函式
下面的例子是求按列表中元素與51的距離的大小排序。
order=[98,183,37,122,14,124,65,67] def f2(a): return abs(53-a) order = sorted(order,key=lambda x:f2(x)) print(order) #輸出[65, 67, 37, 14, 98, 122, 124, 183]
(3)reverse引數
接受False 或者True 表示升序或降序。
True代表降序。
注意:sorted不會直接修改傳進去的可迭代物件,需要用一個新的物件去存它return的結果。
result = sorted(list)