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

2020-12-03 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列表中是字典數據類型的一個排序案例,通過這個案例,我們應該可以去體會到匿名函數的簡潔和實現代碼的優雅,匿名函數需要特別的掌握哦。

相關焦點

  • 「數據清洗」lambda表達式配合使用的四種函數
    其形式如下:lambda argument_list: expression我們可以有很多個參數,但是只能有一個表達式。lambda操作符不能有任何聲明,它返回一個函數對象。其中,lambda是Python預留的關鍵字,argument_list和expression由用戶自定義。
  • python入門基礎之lambda匿名函數詳解
    python入門基礎之lambda匿名函數詳解剛開始學習python的時候很多人可能對於lambda函數不了解,感覺和def很混亂,下面我來介紹一下lambda函數我從一下幾個方面來介紹lambda:lambda作為一個表達式,定義了一個匿名函數,上例的代碼x,y為入口參數,x+y為函數體。在這裡lambda簡化了函數定義的書寫形式。python允許用lambda關鍵字創造匿名函數。匿名是不需要以標準的方式來聲明,比如說使用 def 語句。(除非賦值給一個局部變量,這樣的對象也不會在任何的名字空間內創建名字,上面的例子中會創建名字。)
  • Python中的Lambda表達式
    Lambda表達式也稱為匿名函數。Python中的Lambda表達式是聲明小型匿名函數的一種簡短方式(沒有必要為Lambda函數提供名稱)。Lambda函數的行為就像使用def關鍵字聲明的常規函數一樣。當您希望以簡潔的方式定義一個小型函數時,它們就派上用場了。
  • Python小白學習記錄-匿名函數lambda
    匿名函數就是不需要通過def定義及顯示地指定函數名的函數匿名函數的特性(1)匿名函數只能有一個表達式,不用寫return,返回值就是該表達式的結果。(3)匿名函數也是一個函數對象,可以把匿名函數賦值給一個變量,再利用變量來調用該函數。(4)有些函數在代碼中只用一次,而且函數體比較簡單,不需要賦值給變量,直接調用可以減少代碼量,看起來比較」優雅「。
  • Python數據類型之列表list
    # 列表是python中最基本的數據結構,它是一個有序序列,序列中的每個元素都分配一個數字(位置,索引)# 1、我們可以使用 方括號,中括號[]來創建列表# 2、我們可以直接將序列放在list(seq)
  • Python之list列表數據類型講解
    前言在python中,list列表數據類型其實就是一個容器,可以放置大量元素的集合。同時,list列表也有很多特點和使用場景,本文主要講解list列表的函數方法。概念list列表是一個集合,一個容器,同Java語言中的數組是一樣的,唯一的不同之處在於,Java中的數組類型只能放置同一種數據類型,而Python中的列表可以放置不同的數據類型。
  • Python學習第40課-Lambda表達式創建匿名函數
    【每天幾分鐘,從零入門python編程的世界!】之前我們學習了使用def關鍵字來創建自定義函數,這種方式創建的函數都是有函數名的,我們也可以創建沒有函數名的函數,這種函數叫做匿名函數。Python中可以使用Lambda表達式來創建匿名函數。
  • Lambda表達式在Python事件中的運用
    本篇筆記內容:Lambda表達式詳解Lambda表達式在事件中的應用【1】Lambda表達式詳解lambda表達式定義的是一個匿名函數,只適合簡單輸入參數,簡單計算返回結果,不適合功能複雜情況。lambda 定義的匿名函數也有輸入、也有輸出,只是沒有名字。語法格式如下:lambda 參數值列表:表達式其中,參數值列表即為輸入,表達式計算的結構即為輸出。看一個案例:求三個數的和。
  • Python的一行代碼有何魅力?lambda匿名函數都自嘆不如
    其中,一行代碼編寫與lambda表達式是最具代表性的方法,下面分別來介紹一行代碼編寫和lambda表達式的代碼之美。一行代碼我們都知道,創建列表的方式有多種,比如直接定義、使用list()函數轉換、使用for循環迭代輸出等等。
  • Python每天一分鐘:lambda表達式 (匿名函數)及用法詳解
    >lambda表達式範例一從上述代碼示例可以看出,lambda 表達式的語法格式為:lambda [parameter_list] : 表達式根據其語法格式可以得到lambda 表達式的兩個要點:lambda 表達式必須使用 lambda 關鍵字定義。
  • Python匿名函數:Lambda表達式
    >print(psum(10,40,50)) # 驗證執行效果【結論】lambda實現了函數的效果。學到這裡,我們可以立馬想到一個問題:lambda表達式有什麼應用呢?是否可以用來創建列表、元組、字典或其他自定義的類型呢?
  • 用Python實現職工信息管理系統
    想要實現一個職工管理系統首先我們看一下想要實現什麼功能最基礎的增刪改查肯定要實現的然後增加一下數據顯示、數據排序、數據統計功能下面直接上代碼1.排序函數```pythonglobal datadata = sorted(data, key=lambda x: x[1])```6.
  • 三種基本用法、五種應用場景,理清C++11新特性:Lambda表達式
    表達式語法首先看下lambda表達式的基本語法,它由五部分組成,分別為捕捉列表,參數列表,修飾符,返回類型和函數體。捕捉列表可以設定當前是值傳遞方式[=]或者引用傳遞方式[&], 參數列表則就是函數的參數,返回類型表示函數體執行完成之後返回的類型、比如整型int、布爾型bool等。函數體則是實現實現的功能。
  • Python程式設計師最常犯的10個錯誤,你中招了嗎?
    為什麼每次調用foo()後會不斷把"baz"添加到已有的列表,而不是新建一個新列表呢?答案就是,函數參數的默認值僅在定義函數時執行一次。因此,僅在第一次定義foo()時,bar初始化為默認值(即空列表),此後,每次調用foo()函數時,參數bar都是第一次初始化時生成的列表。
  • Python最重要的5大功能,要是能早點了解就好了!
    但功能雖多,總有主次之分。為了方便大家早點了解Python的一些大功能,小芯特別整理出了其中5大最重要的功能。1. 生成器——內存效率打算計算大量的結果,但同時又想避免同時分配所有結果所需內存,這時候會使用生成器。換句話說,它們即時生成值,但不會將先前生成的值存儲在內存中,因此只需要將其迭代一次。
  • 11個python列表方法全面解析!
    來源:AI入門學習列表是python裡很重要的數據類型,其中的方法總共有11個,數量掌握這些方法,對數據的處理效率會大大提高,現在分享給大家。ls = [1,2,3,5,4,5,5,5,5,"python"]ls.count(5) #統計列表ls中 5 出現的次數5ls.count(0)#列表ls中無0元素ls.count("python")
  • 乾貨| 完美Python入門基礎知識點總結
    python的字串列表有2種取值順序從左到右索引默認0開始的,最大範圍是字符串長度少1從右到左索引默認-1開始的,最大範圍是字符串開頭List(列表) 是 Python 中使用最頻繁的數據類型列表可以完成大多數集合類的數據結構實現。
  • Python列表和元組
    定義列表和函數```l = [1, 2, 'hello', 'world'] # 列表中同時含有 int 和 string 類型的元素l[1, 2, 'hello', 'world']tupl[-1]4tup = (1, 2, 3, 4)tup[-1]4list = [1, 2, 3, 4]l[1:3] # 返回列表中索引從 1
  • python高階函數:map、filter、reduce的替代品
    sorted函數是python的內置函數,它的可選參數key用於提供一個函數,它可以將函數應用到各個元素上進行排序。根據單詞長度,使用sorted函數對一個列表進行排序。其中將len函數傳給key參數,具體示例如下:這裡需要特別提示一下,任何單參數函數都能作為key參數的值。
  • python入門第四課:列表的排序、元素遍歷
    本教程使用的課本是《Python編程:從入門到實踐》,作者:[美] Eric Matthes本節介紹列表的操作,包括列表的排序、元素遍歷等操作。一、列表的排序有時候我們需要按升序或降序排列列表的元素,可以用sort()方法,sort方法默認是升序,如果加個參數,變成sort(reverse=True)就會按降序排列,見下面的代碼:Mylists = [2,58,64,21,33,5,8,9,4,15,23,45,60,88