Python中lambda表達式的常見用法

2021-03-02 Python小屋

非常抱歉,昨天發的代碼中有一處小錯誤,已通過留言的方式進行了糾正,詳情請見詳解Python列表推導式

lambda表達式常用來聲明匿名函數,即沒有函數名字的臨時使用的小函數。lambda表達式只可以包含一個表達式,不允許包含其他複雜的語句,但在表達式中可以調用其他函數,並支持默認值參數和關鍵參數,該表達式的計算結果相當於函數的返回值。下面的代碼演示了不同情況下lambda表達式的應用。

>>> f = lambda x, y, z: x+y+z

#把lambda表達式當做函數使用

>>> print(f(1, 2, 3))

6

#使用lambda表達式定義帶有默認值參數的函數

>>> g = lambda x, y=2, z=3: x+y+z

>>> print(g(1))

6

#調用時使用關鍵參數

>>> print(g(2, z=4, y=5))

11

>>> L=[(lambda x: x**2), (lambda x: x**3), (lambda x: x**4)]

>>> print(L[0](2), L[1](2), L[2](2))

4 8 16

#lambda表達式可以作為字典的「值」

>>> D={'f1':(lambda: 2+3), 'f2':(lambda: 2*3), 'f3':(lambda: 2**3)}

>>> print(D['f1'](), D['f2'](), D['f3']())

5 6 8

>>> L=[1, 2, 3, 4, 5]

#沒有名字的lambda表達式,作為函數參數

>>> print(map((lambda x: x+10), L))

[11, 12, 13, 14, 15]

>>> L

[1, 2, 3, 4, 5]

>>> def demo(n):

return n*n

>>> demo(5)

25

>>> a_list = [1, 2, 3, 4, 5]

#在lambda表達式中可以調用其他函數

>>> map(lambda x: demo(x), a_list)

[1, 4, 9, 16, 25]

#生成20個數,0-19

>>> data = list(range(20))

>>> print(data)

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]

>>> import random

#隨機打亂順序

>>> random.shuffle(data)

>>> data

[4, 3, 11, 13, 12, 15, 9, 2, 10, 6, 19, 18, 14, 8, 0, 7, 5, 17, 1, 16]

#使用lambda表達式指定排序規則

>>> data.sort(key=lambda x: len(str(x)))

>>> data

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]

#使用lambda表達式指定排序規則

>>> data.sort(key=lambda x: len(str(x)), reverse=True)

>>> data

[10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> from random import randrange

#使用列表推導式生成7行5列二維隨機數據

#每個數字在[1,10)範圍內

>>> lst = [[randrange(1, 10) for i in range(5)] for j in range(7)]

>>> for item in lst:

print(item)

[9, 9, 5, 6, 7]

[7, 3, 5, 5, 6]

[3, 5, 3, 5, 3]

[4, 7, 6, 9, 8]

[6, 4, 1, 4, 1]

[9, 7, 8, 9, 4]

[9, 1, 8, 6, 9]

#首先按第3列從小到大排序

#第3列一樣的按第5列從小到大排序

>>> lst.sort(key=lambda item: (item[2], item[4]))

>>> for item in lst:

print(item)

[6, 4, 1, 4, 1]

[3, 5, 3, 5, 3]

[7, 3, 5, 5, 6]

[9, 9, 5, 6, 7]

[4, 7, 6, 9, 8]

[9, 7, 8, 9, 4]

[9, 1, 8, 6, 9]

本文內容節選自《Python程序設計》(第2版),董付國編著,清華大學出版社,2016年6月出版,2016年11月第二次印刷。

相關焦點

  • Python每天一分鐘:lambda表達式 (匿名函數)及用法詳解
    lambda表達式介紹python中有一種靈活,便捷的且具有函數功能的表達式:lambda表達式!lambda 表達式可以用來替換局部函數(感興趣的讀者可以自行查閱「局部函數」),下面為大家演示lambda表達式的具體用法。lambda表達式定義首先以一個代碼例子讓大家對lambda表達式有一個直觀的認識:
  • 不要在Python中編寫 lambda 表達式了
    我將會說明我對 lambda 表達式的看法, 以及為何我傾向於建議學生們避免使用它.Python 中的 lambda 表達式: 它們是什麼?lambda 表達式是 Python 中創建匿名函數的一個特殊語法.
  • Python中的Lambda表達式
    Lambda表達式當我們需要做一些簡單的事情並且更希望快速完成工作而不是正式命名函數時,Lambda表達式是理想的選擇。Lambda表達式也稱為匿名函數。Python中的Lambda表達式是聲明小型匿名函數的一種簡短方式(沒有必要為Lambda函數提供名稱)。
  • 「數據清洗」lambda表達式配合使用的四種函數
    標籤:數據清洗、pythonlambda表達式配合使用的四種函數一、什麼是lambda表達式基本特性使用方法filter函數map函數sorted函數reduce函數總結什麼是lambda表達式>lambda 表達式是一個匿名函數,lambda表達式基於數學中的λ演算得名,直接對應於其中的lambda抽象,是一個匿名函數,即沒有函數名的函數。
  • 詳細講解:python中的lambda與sorted函數
    本文內容主要介紹了python中的lambda與sorted函數的相關資料,幫助大家更好的理解和學習python,感興趣的朋友可以了解下!!!
  • Lambda表達式在Python事件中的運用
    本篇筆記內容:Lambda表達式詳解Lambda表達式在事件中的應用【1】Lambda表達式詳解lambda 表達式定義的是一個匿名函數,只適合簡單輸入參數,簡單計算返回結果,不適合功能複雜情況。lambda 定義的匿名函數也有輸入、也有輸出,只是沒有名字。語法格式如下:lambda 參數值列表:表達式其中,參數值列表即為輸入,表達式計算的結構即為輸出。看一個案例:求三個數的和。
  • python入門基礎之lambda匿名函數詳解
    python入門基礎之lambda匿名函數詳解剛開始學習python的時候很多人可能對於lambda函數不了解,感覺和def很混亂,下面我來介紹一下lambda函數我從一下幾個方面來介紹lambda:1、lambda簡介2、lambda與def不同之處3、lambda的使用方法
  • python之lambda函數使用
    lambda [arg1 [,arg2,argn]]:expressionargs指的是參數,expression指條件表達式,根據參數,進行條件表達後輸出相應內容。二,lambda簡單使用def detail(x,y): return x*ys = lambda x,y:x*yprint(s(3,3))以上對比我們可以看出如果我們想計算兩個數的乘積,需要定義一個函數,傳入兩個形參,然而lambda也是直接傳入兩個形參。後面使用冒號,寫入表達式,即可得到我們所需要的結果。
  • Python中Lambda的前4個錯誤
    當然,lambda具有使我們的代碼簡潔的優勢,但是在項目中過度使用它們會導致濫用,從而降低我們代碼的可讀性和可維護性。在開始研究這些誤用是什麼之前,讓我們先快速回顧一下lambda。如果您對它們非常了解,則可以跳到下一部分。Lambda,也稱為lambda函數,是匿名函數,可以接受任意數量的參數,而只有一個表達式。它們的聲明由lambda關鍵字表示。
  • Python匿名函數:Lambda表達式
    【1】何為Lambda表達式?我們以一張圖形進入主題:從圖中我們可以看出lambda表達式幾點特徵:簡潔性,符合了Python的一貫宗旨;起到了函數的作用,但未顯示函數名稱,這就是匿名函數;有形參;有返回值的。
  • Python中lambda的使用,與它的三個好基友介紹!
    即便你已不是python小白,回過頭看看這本書也能有很多收穫。這幾天在處理項目python自動化升級的工作,其中涉及到大量數據的格式化、類型變更與過濾。所以,今天跟大家講講關於python中幾個精緻的函數除了def語句,python還提供了一種生成函數對象的表達式形式。由於它與LISP語言中的一個工具類似,所以稱為lambda。
  • Python中的lambda函數
    儘管它們在語法上看起來不同,lambda函數的行為方式與使用def關鍵字聲明的一般函數相同。以下是Python中 lambda函數的特點:在本文中,我們將詳細討論Python中的lambda函數,並演示使用它們的例子。
  • 通過「四不要」,掌握 Python 的 Lambda 函數
    當你需要完成一件小工作時,在本地環境中使用它們可以讓工作得心應手。有些人將它們簡稱為 lambdas,它們的語法如下:lambda arguments: expressionlambda 關鍵字可以用來創建一個 lambda 函數,緊跟其後的是參數列表和用冒號分割開的單個表達式。
  • Java8 lambda表達式
    java8中最大的變化就是引入了lambda表達式,一種緊湊的傳遞行為的方式,這也是本書剩下部分所要討論的內容,讓我們進入其中吧。編寫第一個lambda表達式swing是一個平臺無關的gui庫,在該庫中,有很多常見的習慣,比如為了知道用戶點點擊了什麼,註冊一個事件監聽器,這個事件監聽器可以執行一些操作響應用戶的輸入。
  • 一文看懂Python列表表達式及高階函數如lamda, zip, enumerate, map和filter方法.
    函數Lambda函數又稱匿名函數,也有人稱為lambda表達式。lambda匿名函數的格式是 lambda 參數: 表達式。冒號前是參數,可以有多個,用逗號隔開,冒號右邊的為表達式。其實lambda返回值是一個函數的地址,也就是函數對象。下面是個最簡單的lambda函數的例子。
  • Java lambda表達式
    如果lambda表達式匹配參數類型(在這種情況下,是StateChangeListenerinterface),lambda表達式將轉換成實現該參數接口的函數。Java lambda表達式只能在匹配的類型只是單方法接口的時候使用。在上面的示例中,使用lambda表達式作為參數,參數類型為StateChangeListener接口。這個接口只有一個方法。
  • Lambda 表達式的 10 個示例
    作為開發人員,我發現學習和掌握lambda表達式的最佳方法就是勇於嘗試,儘可能多練習流API和lambda表達式,用於對列表(Lists)和集合(Collections)數據進行提取、過濾和排序。本文分享在代碼中最有用的10個lambda表達式的使用方法,這些例子都短小精悍,將幫助你快速學會lambda表達式。
  • Python 中 eval 函數的神奇用法
    Python 中 Eval 函數的用法ambda的一般形式是關鍵字lambda後面跟一個或多個參數,緊跟一個冒號,以後是一個表達式
  • 關於Python中的lambda,這可能是你見過的最完整的講解
    它有哪些用法?這裡,我們通過閱讀各方資料,總結了關於Python中的lambda的「一個語法,三個特性,四個用法,一個爭論」。一個語法在Python中,lambda的語法是唯一的。這裡的expression是一個關於參數的表達式。表達式中出現的參數需要在argument_list中有定義,並且表達式只能是單行的。
  • Python中的4個Lambda函數示例
    Lambda函數式Python裡的匿名函數,有時候提到匿名函數,就是指Lambda函數,其基本語法是:lambda parameters: expression。這裡用lambda關鍵詞標記我們要定義一個Lambda函數,然後是參數列表,參數的個數可以是0個,或者多個。後面是冒號(英文狀態下),然後就是Lambda函數中的表達式。