python之lambda定義匿名函數實現對list列表排序

2020-12-27 HelloWorld小碼農

前言

關於匿名函數的使用及應用之前的文章也有講過,本文再來講解一個關於匿名函數的一個案例:使用匿名函數實現對list列表進行排序。

list.sort()函數

1、定義一個元素類型為整型的list列表,然後排序

運行結果是:

排序之前,list1列表中的內容: [10, 50, 20, 57, 90]

排序之後,list1列表中的內容: [10, 20, 50, 57, 90]

2、定義一個元素類型為字符串類型的list列表,然後排序

運行結果是:

排序之前,list1列表中的內容: ['appen', 'HelloWorld', 'blog', 'Spring', 'MyBatis']

排序之後,list1列表中的內容: ['HelloWorld', 'MyBatis', 'Spring', 'appen', 'blog']

3、定義一個元素類型為字典的list列表,然後排序

運行結果是:

發現並沒有排序,提示錯誤,原因是:"<"不支持字典與字典之間的排序。那麼問題來了,這個sort函數到底是怎麼做到排序的呢?

sort()函數講解

剛才提到,對list列表中元素類型為字典的數據類型不支持排序,那麼就有必要去查看一下sort()函數的說明文檔。

說明:

reverse : 是一個邏輯值,False表示升序排序,True表示降序排序。

key:默認值為None,表示如果不指定參數則直接使用list列表中的元素進行排序,而數字和字符串是可以自身排序的,所以沒有問題。這個key也可以接收一個只帶有一個參數的函數,作用是指定要比較的對象。

注意:

通過對sort()函數分析,發現如果一個列表中是字典類型,那麼使用sort()函數就不能排序了,原因在於字典本身是不能排序,那麼我們就可以給sort()函數通過key傳遞要比較的參數進而實現排序。

使用匿名函數對list列表排序

剛才提到了,這個sort()函數需要接受一個key參數,而這個key參數是需要接收一個函數,那使用匿名函數就可以解決問題。

需求:按照age進行升序排序。

運行結果:

排序之前,list1列表中的內容: [{'name': 'HelloWorld', 'age': 10}, {'name': 'Spring', 'age': 30}, {'name': 'append', 'age': 25}]

排序之後,list1列表中的內容: [{'name': 'HelloWorld', 'age': 10}, {'name': 'append', 'age': 25}, {'name': 'Spring', 'age': 30}]

分析:

給sort()函數傳遞一個匿名函數,這個匿名函數其實就是排序的依據,只是目前使用的age進行排序。

總結

以上就是關於使用匿名函數對list列表中是字典數據類型的一個排序案例,通過這個案例,我們應該可以去體會到匿名函數的簡潔和實現代碼的優雅,匿名函數需要特別的掌握哦。

相關焦點

  • 我用Python之sort排序
    大學C語言編程課上,老師只介紹了最符合直觀思維,效率很低的冒泡排序,經典的快速排序也沒介紹(不過這不是老師的錯,修行在個人)。C++ 的標準模板類庫 STL 提供了快速排序函數 qsort 。但為了實現對自定義類、結構體的排序操作,通常需要自己另寫比較函數,代碼量較大,編程效率較低。「人生苦短,我用Python「。
  • python之lambda函數使用
    二,lambda簡單使用def detail(x,y): return x*ys = lambda x,y:x*yprint(s(3,3))以上對比我們可以看出如果我們想計算兩個數的乘積,需要定義一個函數,傳入兩個形參,然而lambda也是直接傳入兩個形參。後面使用冒號,寫入表達式,即可得到我們所需要的結果。
  • 《python基礎面試,列表排序》
    python基礎面試中,列表排序往往是一個熱門話題,今天就和大家聊聊python的排序知識點首先呢python list內置sort()方法就可以用來排序
  • 「數據清洗」lambda表達式配合使用的四種函數
    其形式如下:lambda argument_list: expression我們可以有很多個參數,但是只能有一個表達式。lambda操作符不能有任何聲明,它返回一個函數對象。其中,lambda是Python預留的關鍵字,argument_list和expression由用戶自定義。
  • 一文看懂Python列表表達式及高階函數如lamda, zip, enumerate, map和filter方法.
    lambda匿名函數的格式是 lambda 參數: 表達式。冒號前是參數,可以有多個,用逗號隔開,冒號右邊的為表達式。其實lambda返回值是一個函數的地址,也就是函數對象。下面是個最簡單的lambda函數的例子。
  • Python中的lambda函數
    lambda函數,和需要被處理的列表,被一同傳遞給filter( )函數。filter()函數將返回一個新的列表,新的列表中只包含舊列表中被lambda函數處理後返回值為True的那些元素。請參考下面給出的例子:
  • python入門基礎之lambda匿名函數詳解
    python入門基礎之lambda匿名函數詳解剛開始學習python的時候很多人可能對於lambda函數不了解,感覺和def很混亂,下面我來介紹一下lambda函數我從一下幾個方面來介紹lambda:1、lambda簡介2、lambda與def不同之處3、lambda的使用方法
  • 詳細講解:python中的lambda與sorted函數
    lambda表達式python中形如:lambda parameters: expression稱為lambda表達式,用於創建匿名函數,該表達式會產生一個函數對象。該對象的行為類似於用以下方式定義的函數:def <lambda>(parameters): return expressionpython中的lambda函數可以接受任意數量的參數,但只能有一個表達式。也就是說,lambda表達式適用於表示內部僅包含1行表達式的函數。
  • 小羊學編程之Python lambda匿名函數的學習
    Python的lambda是用於構造函數,與def類似。但省去了命名函數的過程。可以直接將函數賦值給變量,省去了return使代碼看起來更簡潔。lambda匿名函數常與map() 、filter()、reduce()函數一起使用。1、map()函數,是 Python 內置的高階函數,將序列中的元素通過處理變成一個新的序列。
  • Python小白學習記錄-匿名函數lambda
    匿名函數就是不需要通過def定義及顯示地指定函數名的函數匿名函數的特性(1)匿名函數只能有一個表達式,不用寫return,返回值就是該表達式的結果。(2)匿名函數沒有名字,不必擔心函數名衝突。lambda表示這是一個匿名函數
  • Python 列表排序 sort 與 sorted 詳解
    ]: [1, 2, 3, 5]In [14]: type(sorted(li))Out[14]: listIn [15]: liOut[15]: [1, 5, 3, 2]二、使用進階上面簡單介紹了對列表的簡單排序,那麼,如果列表中嵌套了列表或者是字典呢?
  • Python中的Lambda表達式
    Lambda表達式也稱為匿名函數。Python中的Lambda表達式是聲明小型匿名函數的一種簡短方式(沒有必要為Lambda函數提供名稱)。Lambda函數的行為就像使用def關鍵字聲明的常規函數一樣。當您希望以簡潔的方式定義一個小型函數時,它們就派上用場了。
  • Python數據類型之列表list
    # 列表是python中最基本的數據結構,它是一個有序序列,序列中的每個元素都分配一個數字(位置,索引)# 1、我們可以使用 方括號,中括號[]來創建列表# 2、我們可以直接將序列放在list(seq)# python中的列表是可變的,且列表內部由元素組成
  • 通過「四不要」,掌握 Python 的 Lambda 函數
    中的匿名函數。函數,最佳實踐是使用通過 def 定義的允許使用文檔字符串的常規函數。思考下面用法示例:>>> # 創建一個數字列表>>> numbers = [2, 1, 3, -3]>>> # 使用帶有 lambda 函數的 map 函數>>> list(map(lambda x: x * x, numbers))[4, 1, 9, 9]>>
  • Python中lambda的使用,與它的三個好基友介紹!
    這些就是lambda叫做匿名函數的原因。實際上,他常常以一種行內進行函數定義的方式使用,或者用作推遲執行一些代碼。lambda有一些不同之處,讓其扮演特定的角色時更有用:lambda是一個表達式,而不是一個語句因為這一點,lambda可以出現在python語法不允許def出現的地方。
  • Python 打基礎一定要吃透這 5 個內置函數
    通過一個例子來引出 zip的使用:需求:如果我們想對兩個列表對應位置上的數字一一求和,該如何操作?x = [1,2,3]y = [4,5,6]for循環實現)d = "zip"print(list(zip(a,b))) # 列表+集合print("--")print(list(zip(a,c))) # 列表+元組print("--") print(list(zip(b,d))) # 集合+元組print("--")print(list(
  • python list 排序的兩種方法及實例講解
    對 list 進行排序,Python 提供了兩個方法:方法1.
  • Python中的4個Lambda函數示例
    Lambda函數式Python裡的匿名函數,有時候提到匿名函數,就是指Lambda函數,其基本語法是:lambda parameters: expression。這裡用lambda關鍵詞標記我們要定義一個Lambda函數,然後是參數列表,參數的個數可以是0個,或者多個。後面是冒號(英文狀態下),然後就是Lambda函數中的表達式。
  • python給list排序的簡單方法
    其實會出現這種情況是由於計算機算法的排序,會根據關鍵詞關聯、搜索量等原因排序。那你知道在python中如何給列表排序嗎?今天,小編教教大家如何給列表排序。sort()方法會對list中元素按照大小進行排序list.sort(key=None,reverse=False)實例:In [57]: l=[27,47,3,42,19,9]In [58]: l.sort()In [59]: lOut[59]: [3, 9, 19,
  • Python中Lambda的前4個錯誤
    相反,本文的目的是向您展示最常見的lambda誤用,以便在以下所列情況以外的其他情況下使用lambda時,您可能會正確使用它們。1.重新發明輪子lambdas的第一個誤用是忽略了現有的內置函數。讓我們仍然以sorted()函數為例。假設我們有一個字符串列表,我們想使用它們的長度對它們進行排序。