sorted用法
sorted是Python提供的功能強(qiáng)大的排序函數(shù)。滿足字符,數(shù)字等排序要求。
對(duì)數(shù)字進(jìn)行排序:
list = [-12, -2, -24, 20, 39, 10];
print(sorted(list))
輸出結(jié)果:
[-24, -12, -2, 10, 20, 39]
sorted 作為一個(gè)高階函數(shù),支持傳入key。key作為排序的規(guī)則.
sorted(array,key)
將list 中元素取絕對(duì)值之后排序
print(sorted(lsit, key=abs))
輸出結(jié)果:
[-2, 10, -12, 20, -24, 39]
原數(shù)組:
| 數(shù)據(jù) | 排序結(jié)果 |
|---|---|
| list | [-24, -12, -2, 10, 20, 39] |
| key=abs | [24,12,2,10,20,39] -> [2,10,12,20,24,39] |
| sorted(list,key = abs) | [-2,10,-12,20,-24,39] |
高階函數(shù)允許傳入key 作為排序規(guī)則。
先經(jīng)過(guò)key規(guī)則對(duì)數(shù)組進(jìn)行處理之后。在使用sorted進(jìn)行排序。
sorted排序字符:
listStr = ["C", "s", "a", "A", "z", "O"];
# 使用所有的字符轉(zhuǎn)為小寫(xiě),然后根據(jù)ascii碼相應(yīng)字符的排序進(jìn)行比較
print(sorted(listStr, key=str.lower))
輸出結(jié)果:
['a', 'A', 'C', 'O', 's', 'z']
sorted(listStr,key= str.lower, reverse=True)
reverse:允許對(duì)已經(jīng)經(jīng)過(guò)key處理過(guò)的數(shù)據(jù)進(jìn)行反轉(zhuǎn).
# 忽略大小寫(xiě) 排序字符
listStr = ["C", "s", "a", "A", "z", "O"];
# 使用所有的字符轉(zhuǎn)為小寫(xiě),然后根據(jù)ascii碼相應(yīng)字符的排序進(jìn)行比較
print(sorted(listStr, key=str.lower, reverse=True))
輸出結(jié)果:
['z', 's', 'O', 'C', 'a', 'A']
使用operator.itemgetter 作為key進(jìn)行排序
一個(gè)例子:
以下students數(shù)組,結(jié)構(gòu)為(名字,成績(jī),年齡)
students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
對(duì)students 按照名字、成績(jī)、年齡排序
使用itemgetter獲取數(shù)組中特定下標(biāo)元素作為key
print(sorted(students, key=itemgetter(1)))
輸出結(jié)果:
[('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
print(sorted(students, key=itemgetter(1,0)))
輸出結(jié)果:
[('john', 'A', 15), ('dave', 'B', 10), ('jane', 'B', 12)]
由以上結(jié)果可以發(fā)現(xiàn),使用itemgetter獲取數(shù)組元素作為key處理規(guī)則。
計(jì)算邏輯為,依次使用itemgetter中參數(shù)進(jìn)行處理數(shù)組。
使用lamda表達(dá)式作為key
print(sorted(students, key=lambda x: students[1]))
輸出結(jié)果:
[('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
以上都支持在reverse屬性對(duì)數(shù)據(jù)進(jìn)行反轉(zhuǎn)。
如果解決了你的問(wèn)題,請(qǐng)點(diǎn)個(gè)贊。
不點(diǎn)就在看一遍吧。