python內置函數sorted
sorted與sort
sort:是對list排序的所用方法,是對已經存在的原列表進行操作,沒有返回值。
sorted:可以對所有可迭代的對象(元組、列表等)進行排序。返回一個新的列表,不會對原有的對象進行操作。
sorted語法
sorted(iterable,cmp=None,key=None,reverse=False)
iterable——可迭代對象(用來排序的列表、元組等)
cmp——比較的函數,兩個參數,參數值由迭代對象中取出,函數有返回值:大於則返回1,小於返回-1,等於返回0。
具體寫法為:cmp=lambda x,y:x[1],y[1]
(x,y表示用來排序的元組或者列表等的元素,‘1’代表元素的下標)
key——主要用來進行比較的元素,只有一個參數,參數為迭代對象中取出的元素,指定可迭代對象的元素來進行排序。
具體寫法為:key=lambda x:x[1]
(x表示排序的對象中的元素,‘1’表示元素的下標)
cmp與key類似,但是cmp是2個參數,而key只有一個參數。對於待排序的對象,cmp會被多次調用,key只會被調用一次。
reverse——排序規則,reverse=True:降序;reverse=False升序(默認)。
實例
(不同的代碼編譯環境存在差異)
L=[('d',1),('a',4),('e',3),('c',2)]
print sorted(L,cmp=lambda x,y:x[1],y[1])#利用cmp函數對L中對象的數字升序排列
print sorted(L,cmp=lambda x,y:x[0],y[0],reverse=True) #利用cmp函數對L中對象的字母進行降序排列
print sorted(L,key=lambda x:x[0])#利用key函數對L中的元素的字母進行升序排列
print sorted(L,key=lambda x:x[1],reverse=True)#利用key函數對L中的元素的數字進行降序排列
print L#對L進行輸出
#輸出結果為:
[('d',1),('c',2),('e',3),('a',4)]
[('e',3),('d',1),('c',2),('a',4)]
[('a',4),('c',2),('d',1),('e',3)]
[('a',4),('e',3),('c',2),('d',1)]