說到排序,很多人可能第一想到的就是sorted,但是你可能不知道python中其實還有還就中方法喲,并且好多種場景下效率都會比sorted高。那么接下來我就依次來介紹我所知道的排序操作。

sorted(iterable, *, key=None, reverse=False)
list1=[1,6,4,3,9,5]
list2=['12','a6','4','c34','b9','5']
print(sorted(list1)) #[1, 3, 4, 5, 6, 9]
print(sorted(list2)) #['12', '4', '5', 'a6', 'b9', 'c34']
#總結上面兩種排序:字符串排序根據(jù)元素首字符的ASCII比較進行排序,
#數(shù)字類型按照大小排序,數(shù)字不能混合排序
list3=[
{'name':'jim','age':23,'price':500},
{'name':'mase','age':23,'price':600},
{'name':'tom','age':25,'price':2000},
{'name':'alice','age':22,'price':300},
{'name':'rose','age':21,'price':2400},
]
print(sorted(list3,key=lambda s:(s['age'],s['price'])))
#[{'name': 'rose', 'age': 21, 'price': 2400}, {'name': 'alice', 'age': 22, 'price': 300}, {'name': 'jim', 'age': 23, 'price': 500}, {'name': 'mase', 'age': 23, 'price': 600}, {'name': 'tom', 'age': 25, 'price': 2000}]
最后的reverse參數(shù)我就不作說明了,就是把結果進行倒序,可用作降序排列
介紹一種比lambda效率高的方式:
operator模塊中的方法itemgetter
>>> itemgetter(1)('ABCDEFG')
'B'
>>> itemgetter(1,3,5)('ABCDEFG')
('B', 'D', 'F')
>>> itemgetter(slice(2,None))('ABCDEFG')
'CDEFG
運用到上述代碼
print(sorted(list3,key=itemgetter('age','price'))) #結果同上但效率會比較高另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
網(wǎng)站標題:詳解python之heapq模塊及排序操作-創(chuàng)新互聯(lián)
新聞來源:http://chinadenli.net/article48/cocphp.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供微信公眾號、面包屑導航、云服務器、Google、網(wǎng)站排名、手機網(wǎng)站建設
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)