日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

【Python 必会技巧】lambda 表达式(匿名函数)及其在内置函数中的应用

發(fā)布時間:2023/12/10 python 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Python 必会技巧】lambda 表达式(匿名函数)及其在内置函数中的应用 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

lambda 表達式,又稱匿名函數(shù),即,函數(shù)沒有具體的名稱,常用來表示內(nèi)部僅包含 1 行表達式的函數(shù)。

使用 lambda 編寫的代碼更加簡潔緊湊,但是 lambda 函數(shù)支持的功能卻是十分有限的,目前 PEP8 已經(jīng)不建議使用 lambda,而是推薦使用 def 去定義一個函數(shù),即便如此,作為 Python 程序員,認識和了解該匿名函數(shù)還是有必要的。

  • lambda 只是一個表達式,函數(shù)體比 def 簡單很多。
  • lambda 的主體是一個表達式,而不是一個代碼塊。僅僅能在 lambda 表達式中封裝有限的邏輯進去。
  • lambda 函數(shù)擁有自己的命名空間,且不能訪問自有參數(shù)列表之外或全局命名空間里的參數(shù)。
  • 雖然 lambda 函數(shù)看起來只能寫一行,卻不等同于 C 或 C++ 的內(nèi)聯(lián)函數(shù),后者的目的是調(diào)用小函數(shù)時不占用棧內(nèi)存從而增加運行效率。

lambda 的語法:lambda argument(s):expression

lambda 函數(shù)可以有很多個參數(shù),但是只能有一個表達式。lambda 操作符不能有任何聲明,它返回一個函數(shù)對象,可以將此函數(shù)對象賦值給任何變量。

lambda 函數(shù)簡單示例:

lambda x, y: x * y # 函數(shù)輸入是 x 和 y,輸出是它們的積 x*y lambda:None # 函數(shù)沒有輸入?yún)?shù),輸出是 None >>> a = lambda x: x+1 >>> a(1) 2# 用 def 函數(shù)表示如下:>>> def a(x):return x+1 >>> a(1) 2

lambda 函數(shù)與 def 的主要不同點:

  • lambda 可以立刻傳遞(無需變量),自動返回結(jié)果;
  • lambda 在內(nèi)部只能包含一行代碼;
  • lambda 是一個為編寫簡單的函數(shù)而設計的,而 def 用來處理更大的任務;
  • lambda 可以定義一個匿名函數(shù),而 def 定義的函數(shù)必須有一個名字。

lambda 函數(shù)的優(yōu)勢:

  • 對于單行函數(shù),使用 lambda 表達式可以省去定義函數(shù)的過程,讓代碼更加簡潔;
  • 對于不需要多次復用的函數(shù),使用 lambda 表達式可以在用完之后立即釋放,提高程序執(zhí)行的性能。

lambda 函數(shù)經(jīng)常用于一些內(nèi)置函數(shù)中:

map() 函數(shù):遍歷序列,對序列中每個元素進行操作,此時 lambda 函數(shù)用于指定對列表中每一個元素的共同操作條件。

>>> list1 = [1, 2, 3, 4] >>> list2 = [5, 6, 7 ,8] >>> list3 = map(lambda a, b: a + b, list1, list2) # 將兩個列表中對應的元素相加 >>> print(list3) <map object at 0x000001EA57C07780> >>> print(list(list3)) [6, 8, 10, 12]

filter() 函數(shù):對于序列中的元素進行篩選操作,此時 lambda 函數(shù)用于指定過濾列表元素的條件。

>>> list1 = [1, 2, 3, 4] >>> list2 = filter(lambda a: a > 2, list1) # 篩選出列表中大于 2 的元素 >>> print(list2) <filter object at 0x000001EA57C07898> >>> print(list(list2)) [3, 4]

reduce() 函數(shù):對于序列中所有元素進行累積操作,此時 lambda 函數(shù)用于指定列表中兩兩相鄰元素的累積條件。

>>> from functools import reduce >>> list1 = [1, 2, 3, 4] >>> list2 = reduce(lambda a, b: a + b, list1) # 兩兩相鄰元素進行相加操作 >>> print(list2) 10 >>> list2 = reduce(lambda a, b: a * b, list1) # 兩兩相鄰元素進行相乘操作 >>> print(list2) 24

sorted() 函數(shù):對于序列中的元素進行排序操作,此時 lambda 函數(shù)用于指定對列表中所有元素進行排序的條件。

>>> list1 = [1, 2, 3, 4, 5, 6, 7, 8] >>> list2 = sorted(list1, key = lambda a: abs(4-a)) # 將列表元素按照與 4 的距離從小到大進行排序 >>> print(list2) [4, 3, 5, 2, 6, 1, 7, 8]

其他資料:《不要在Python中編寫 lambda 表達式了,不建議大家使用它》

總結(jié)

以上是生活随笔為你收集整理的【Python 必会技巧】lambda 表达式(匿名函数)及其在内置函数中的应用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。