Home - Learn - 03Python - 0306Mothods - 030601sort
Python對串列的排序方法有二種:
第一種是利用List串列的sort()方法,它會變更List串列資料的順序,讓它們由小到大(預設),或是由大到小排列(反向排序,可以利用reverse=True參數)。
第二種是利用List串列的sorted()方法,也可以進行排序。但是它會產生一個新的串列,不會變更原來串列。它的用法和前面的說明一樣,差別只在於第一個參數必須傳入要排序的串列。
A=[55,22,44,88,99,12] #串列A為一維陣列
A.sort() #.sort() 方法排序
print(A)
A.sort(reverse=True)#reverse=True參數,反向排序
print(A)
B=sorted(A)#.sorted()方法,將排序結果另存為串列B
print(B)
C=sorted(A,reverse=True)#reverse=True參數,反向排序,並將結果另存為串列C
print(C)
如果每一筆資料包含多個項目,sort()方法預設會用第一項資料來排序。
要自己指定排序的依據,例如用以上範例中的數字來排序,可以利用key參數搭配Lamda函式。
如果每一筆資料中有多項成績,也可以利用Lamda函式把成績加總,再根據加總的結果排序。
A=[["帥哥",100,99],["豬哥",87,78],["弟弟",77,99]]
B=[('蘋果',88,77),('香蕉',13,78),('橘子',55,66)] #串列用[]或()來分隔每個資料都,字串用""或''來表示都可。
C=[["林彥辰",99,98,100],["林瑀芮",100,100,88],["林宥汯",98,99,99]]
A.sort() #排序A,預設以第1項資料排序,即串列中[第0項,第1項,第2項]的第0項「姓名」來排序。
print(A)
A.sort(reverse=True)#排序A,依第1項姓名反向排序
print(A)
B.sort(key=lambda B:B[2])#排序B,以key參數搭配lambda函數,指定B串列的第2項為排序依據,其實是第3項喔![0,1,2] 66 < 77 < 78
print(B)
B.sort(key=lambda B:B[1])#排序B,指定第1項為排序依據,其實是第2項喔![0,1,2] 13 < 55 < 88
print(B)
C.sort(key=lambda C:C[1]+C[2]+C[3])#排序C,指定以第1、2、3項加總來排序,即2,3,4項的成績加總。
print(C)