python 排序sorted

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)]
相關文章
相關標籤/搜索