Python提供了兩個方法對給定的List 進行排序,
python
方法1.用List的成員函數sort進行排序函數
testList = [5, 2, 3, 1, 4] print(sorted(testList))
方法2.用built-in函數sorted進行排序
ui
testList = [5, 2, 3, 1, 4] testList.sort() print(testList)
注:sort()與sorted()的不一樣在於,sort是在原位從新排列列表,而sorted()是產生一個新的列表。
spa
sorted(iterable, cmp=None, key=None, reverse=False) --> new sorted list
code
xxx.sort(cmp=None, key=None, reverse=False)排序
cmp(x, y) -> -1, 0, 1it
iterable:是可迭代類型;
class
cmp:用於比較的函數,比較什麼由key決定,有默認值,迭代集合中的一項;test
key:用列表元素的某個屬性和函數進行做爲關鍵字,有默認值,迭代集合中的一項;效率
reverse:排序規則. reverse = True 或者 reverse = False,有默認值。
返回值:是一個通過排序的可迭代類型,與iterable同樣。
注;通常來講,cmp和key能夠使用lambda表達式。
testList = [('b',2),('a',1),('c',3),('d',4)] print(sorted(testList, cmp=lambda x,y:cmp(x[1],y[1]))) 輸出結果:[('a', 1), ('b', 2), ('c', 3), ('d', 4)] testList = [('b',2),('a',1),('c',3),('d',4)] print(sorted(testList, key=lambda x:x[1])) 輸出結果:[('a', 1), ('b', 2), ('c', 3), ('d', 4)] print(sorted([5, 2, 3, 1, 4], reverse=True)) 輸出結果:[5, 4, 3, 2, 1] print(sorted([5, 2, 3, 1, 4], reverse=False)) 輸出結果:[1, 2, 3, 4, 5]
注:效率key>cmp(key比cmp快)
在Keys排序中,此時排序過的列表是僅僅按照第二個關鍵字來排的,若是想用第二個關鍵字排 過序後再用第一個關鍵字進行排序:
testList = [('d',2),('a',4),('b',3),('c',2)] print(sorted(testList, key=lambda x:(x[1],x[0]))) 輸出結果:[('c', 2), ('d', 2), ('b', 3), ('a', 4)]