新聞中心
一、前言
其實這里【瑜亮老師】、【布達佩斯的永恒】等人講了很多,只不過對于基礎(chǔ)不太好的小伙伴們來說,還是有點難的。不過在實際應(yīng)用中內(nèi)置函數(shù)sorted()用的還是蠻多的,這里也單獨拿出來講一下,希望下次再有小伙伴遇到的時候,可以不慌。

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)建站!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、小程序設(shè)計、集團企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了奈曼免費建站歡迎大家使用!
二、基礎(chǔ)用法
內(nèi)置函數(shù)sorted()可以用來做排序,基礎(chǔ)的用法很簡單,看個例子,如下所示。
lst = [3, 28, 18, 29, 2, 5, 88]result = sorted(lst)print(result)
程序運行之后,可以看到列表從小到大進行升序排序了。
如果想讓它倒序排序的話,也很簡單,加個reverse參數(shù)即可。
lst = [3, 28, 18, 29, 2, 5, 88]result = sorted(lst, reverse=True)print(result)
三、高級用法
上面我們遇到的列表(迭代器)是很簡單的數(shù)字類型,如果遇到比較復(fù)雜的迭代器,然后需要對其進行排序的話,如下面這個例子,如下:
lst = [ {"id": 1, "name": "魯班", "age": 18}, {"id": 2, "name": "魯班大師", "age": 26}, {"id": 3, "name": "魯大師", "age": 23}, {"id": 4, "name": "狄仁杰", "age": 48}]# 按照年齡,對英雄進行排序,升序
針對類似這樣的迭代器或者可迭代的對象,對其進行排序的話,就需要使用自定義的方法對其進行排序了。這個也都可以使用內(nèi)置函數(shù)sorted()來進行,關(guān)于sorted()的用法如下所示。
它一共有三個參數(shù),第一個參數(shù)是可迭代對象,如列表、字典、集合等等;第二個參數(shù)是指排序規(guī)則(排序函數(shù)),在sorted()內(nèi)部會將可迭代對象中的每一個元素傳遞給這個函數(shù)的參數(shù),根據(jù)函數(shù)運行的結(jié)果進行排序;第三個參數(shù)是reverse,如果是True表示倒序,如果是False則表示正序。
那么針對該題目,可以使用下面的代碼進行排序:
sorted(lst, key=lambda x: x.get('age'))
其中這個key就是自己自定義的一個匿名函數(shù),用于指定排序規(guī)則,這里的話就是取字典中的age,然后根據(jù)age的大小去進行排序,所以得到的結(jié)果如下圖所示。
如果想取出年齡大于28的英雄,該怎么做?
這里引申了下,也是可以使用內(nèi)置函數(shù)來做,只不過這個地方用到的內(nèi)置函數(shù)是filter()了,代碼如下所示:
list(filter(lambda x: x['age'] >= 28, lst))
番外篇
最近又有很多小伙伴們在問Python深淺拷貝的知識點,這里昨天整理了一份資料,這里分享給大家,面試題的時候經(jīng)常會被問到,共勉。
三、總結(jié)
大家好,我是Python進階者。這篇文章主要分享了Python的內(nèi)置函數(shù)sorted()排序問題,針對該問題給出了具體的解析和代碼演示,幫助粉絲順利解決了問題。
本文題目:盤點Python內(nèi)置函數(shù)sorted()高級用法實戰(zhàn)
網(wǎng)站鏈接:http://m.fisionsoft.com.cn/article/djodgej.html


咨詢
建站咨詢
