在 python 語(yǔ)言的內(nèi)置對(duì)象中存在兩個(gè)比較常用的排序函數(shù):sort、sorted,另外常用的科學(xué)計(jì)算庫(kù) numpy 中的 也提供了很多的排序支持。本小節(jié)主要說(shuō)明內(nèi)置排序方法 sort、sorted 的使用場(chǎng)景,后續(xù)篇幅中會(huì)針對(duì) numpy 的使用進(jìn)行說(shuō)明。 1、sort() 函數(shù)的簡(jiǎn)單使用特點(diǎn):sort() 函數(shù)只有在 list 列表的對(duì)象中才可以使用,直接該表列表本身的順序不會(huì)生成新的列表對(duì)象,字符串按照 ASCII 碼進(jìn)行排序、中文按照 unicode 編碼進(jìn)行從小到大的排序。 1if __name__ == '__main__': 2 # 定義列表 3 list_ = list([5,2,3,4,6,1]) 4 # 執(zhí)行排序 5 list_.sort() 6 # 結(jié)果 7 print list_
1if __name__ == '__main__': 2 # 定義列表 3 list_ = list([5, 2, 3, 4, 6, 1]) 4 # 執(zhí)行排序 5 list_.sort(reverse=True) 6 # 結(jié)果 7 print list_
1if __name__ == '__main__': 2 # 定義列表 3 list_ = [('e',2),('a',1),('c',3),('d',4)] 4 # 執(zhí)行排序 5 list_.sort(cmp=lambda m,n:cmp(m[1],n[1])) 6 # 結(jié)果 7 print list_
lambda 表達(dá)式說(shuō)明:lambda m,n:cmp(m[1],n[1]) 表示元素對(duì)象的第1個(gè)位置也就是 2,1,3,4 之間進(jìn)行比較后返回升序的新迭代對(duì)象。 2、sorted() 函數(shù)參數(shù)的妙用
特點(diǎn):sorted(iterable,cmp,key,reverse)函數(shù)可以對(duì)可迭代的序列進(jìn)行排序,并且返回一個(gè)新的對(duì)象、不對(duì)原有的列表對(duì)象進(jìn)行修改。 1if __name__ == '__main__': 2 # 定義列表 3 list_ = ['d','f','a','c','b','e'] 4 # 執(zhí)行排序 5 list_2 = sorted(list_) 6 # 結(jié)果 7 print list_2
1if __name__ == '__main__': 2 # 定義列表 3 list_ = [('e',2),('a',1),('c',3),('d',4)] 4 # 執(zhí)行排序 5 list_2 = sorted(list_,key=lambda n:n[1]) 6 # 結(jié)果 7 print list_2
lambda 表達(dá)式說(shuō)明:lambda n:n[1],n 代表每個(gè)元素,比如:('e’,2) 就是其中一個(gè)元素,n[1] 代表每個(gè)元素上的第一個(gè)位置,在 ('e',2) 中第一個(gè)位置正好是 2。由此可見(jiàn),此迭代對(duì)象中是以 2,1,3,4 的升序?yàn)闃?biāo)準(zhǔn)進(jìn)行排序的。
1if __name__ == '__main__': 2 # 定義列表 3 list_ = [('e',2),('a',1),('c',3),('d',4)] 4 # 執(zhí)行排序 5 list_2 = sorted(list_,cmp=lambda m,n:cmp(m[0],n[0])) 6 # 結(jié)果 7 print list_2
lambda 表達(dá)式說(shuō)明:lambda m,n:cmp(m[0],n[0]) 表示元素對(duì)象的第0個(gè)位置也就是 e,a,c,d 之間進(jìn)行比較后返回升序的新迭代對(duì)象。
1if __name__ == '__main__': 2 # 定義列表 3 list_ = ['d','f','a','c','b','e'] 4 # 執(zhí)行排序 5 list_2 = sorted(list_,reverse=True) 6 # 結(jié)果 7 print list_2
|