首頁  >  文章  >  後端開發  >  盤點Python內建函數sorted()高階用法實戰

盤點Python內建函數sorted()高階用法實戰

WBOY
WBOY轉載
2023-05-13 10:34:051266瀏覽

一、前言

前幾天在Python鑽石交流群有個叫【emerson】的粉絲問了一個Python排序的問題,這裡拿出來給大家分享下,一起學習下。

盤點Python內建函數sorted()高階用法實戰

其實這裡【瑜亮老師】、【布達佩斯的永恆】等人講了很多,只不過對於基礎不太好的小夥伴們來說,還是有點難的。不過在實際應用內建函數sorted()用的還是蠻多的,這裡也單獨拿出來講一下,希望下次再有小夥伴遇到的時候,可以不慌。

盤點Python內建函數sorted()高階用法實戰

二、基礎用法

內建函數sorted()可以用來做排序,基礎的用法很簡單,看個例子,如下圖所示。

lst = [3, 28, 18, 29, 2, 5, 88]result = sorted(lst)print(result)

盤點Python內建函數sorted()高階用法實戰

#程式運行之後,可以看到列表從小到大進行升序排序了。

如果想讓它倒序排序的話,也很簡單,加個reverse參數即可。

lst = [3, 28, 18, 29, 2, 5, 88]result = sorted(lst, reverse=True)print(result)

盤點Python內建函數sorted()高階用法實戰

#三、進階用法

上面我們遇到的列表(迭代器)是很簡單的數字類型,如果遇到比較複雜的迭代器,然後需要對其進行排序的話,如下面這個例子,如下:

lst = [ {"id": 1, "name": "魯班", "age": 18}, {"id": 2, "name": "魯班大師", "age": 26}, {"id": 3, "name": "魯大師", "age": 23}, {"id": 4, "name": "狄仁傑", "age": 48 }]# 依照年齡,將英雄排序,升序

針對類似這樣的迭代器或可迭代的對象,對其進行排序的話,就需要使用自訂的方法對其進行排序了。這個也都可以使用內建函數sorted()來進行,關於sorted()的用法如下所示。

盤點Python內建函數sorted()高階用法實戰

它一共有三個參數,第一個參數是可迭代對象,如列表、字典、集合等等;第二個參數是指排序規則(排序函數),在sorted()內部會將可迭代物件中的每一個元素傳遞給這個函數的參數,根據函數運行的結果進行排序;第三個參數是reverse,如果是True表示倒序,如果是False則表示正序。

那麼針對該題目,可以使用下面的程式碼進行排序:

sorted(lst, key=lambda x: x.get('age'))

其中這個key就是自己自訂的一個匿名函數,用來指定排序規則,這裡的話就是取字典中的age,然後依照age的大小去進行排序,所以得到的結果如下圖。

盤點Python內建函數sorted()高階用法實戰

如果想取出年齡大於28的英雄,該怎麼做?

盤點Python內建函數sorted()高階用法實戰

這裡引申了下,也是可以使用內建函數來做,只不過這個地方用到的內建函數是filter()了,程式碼如下所示:

list(filter(lambda x: x['age'] >= 28, lst))

盤點Python內建函數sorted()高階用法實戰

##番外篇

最近又有很多小夥伴們在問Python深淺拷貝的知識點,這裡昨天整理了一份資料,這裡分享給大家,面試題的時候常常會被問到,共勉。

盤點Python內建函數sorted()高階用法實戰

三、總結

大家好,我是Python進階者。這篇文章主要分享了Python的內建函數sorted()排序問題,針對該問題給出了具體的解析和程式碼演示,幫助粉絲順利解決了問題。

以上是盤點Python內建函數sorted()高階用法實戰的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:51cto.com。如有侵權,請聯絡admin@php.cn刪除