sorted()方法 sorted()可用於任何一個可迭代對象。 原型為sorted(iterable, cmp=None, key=None, reverse=False) iterable:一個可迭代對象; cmp:用於比較的函數,比較什麼由key決定; key:用列表元素的某個屬性或函數進行作 ...
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)