国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

python——lambda函數(shù)

這篇具有很好參考價(jià)值的文章主要介紹了python——lambda函數(shù)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

lambda?表達(dá)式,又稱匿名函數(shù),常用來表示內(nèi)部?jī)H包含 1 行表達(dá)式的函數(shù)。如果一個(gè)函數(shù)的函數(shù)體僅有 1 行表達(dá)式,則該函數(shù)就可以用?lambda?表達(dá)式來代替。

name = lambda [list] : 表達(dá)式

其中,定義?lambda?表達(dá)式,必須使用?lambda?關(guān)鍵字;[list]?作為可選參數(shù),等同于定義函數(shù)是指定的參數(shù)列表;value?為該表達(dá)式的名稱。

該語法格式轉(zhuǎn)換成普通函數(shù)的形式,如下所示:

def name(list):
    return 表達(dá)式
name(list)

顯然,使用普通方法定義此函數(shù),需要 3 行代碼,而使用?lambda?表達(dá)式僅需 1 行。

舉個(gè)例子,如果設(shè)計(jì)一個(gè)求 2 個(gè)數(shù)之和的函數(shù),使用普通函數(shù)的方式,定義如下:?

def add(x, y):
    return x + y
print(add(3,4))
7

可以這樣理解?lambda?表達(dá)式,其就是簡(jiǎn)單函數(shù)(函數(shù)體僅是單行的表達(dá)式)的簡(jiǎn)寫版本。相比函數(shù),lambada?表達(dá)式具有以下 2 個(gè)優(yōu)勢(shì):

  1. 對(duì)于單行函數(shù),使用?lambda?表達(dá)式可以省去定義函數(shù)的過程,讓代碼更加簡(jiǎn)潔;

  2. 對(duì)于不需要多次復(fù)用的函數(shù),使用?lambda?表達(dá)式可以在用完之后立即釋放,提高程序執(zhí)行的性能。

使用匿名函數(shù)

特性

  • lambda 函數(shù)是匿名的:
    • 所謂匿名函數(shù),就是沒有名字的函數(shù),沒有名字就代表著不必?fù)?dān)心函數(shù)名稱沖突。
  • lambda 函數(shù)有輸入和輸出:
    • 匿名函數(shù)也是一個(gè)函數(shù)對(duì)象,所以可以把匿名函數(shù)賦值給一個(gè)變量,再利用變量來調(diào)用函數(shù)
    • 匿名函數(shù)的輸入是傳入到參數(shù)列表 [list] 的值
    • 匿名函數(shù)的輸出是根據(jù)表達(dá)式計(jì)算得到的值
  • lambda 函數(shù)擁有自己的命名空間:
    • 搜索變量的作用域順序與之前的內(nèi)容說的規(guī)則一致,也是?L –> E –> G –> B

以下實(shí)例說明匿名函數(shù)的以上三個(gè)特性:

a = 10
f = lambda x: x * a
print(f)
print(type(f))
print(f(3))
<function <lambda> at ...>      # 這里的 ... 指得是運(yùn)行代碼時(shí)分配的地址
<class 'function'>
30

常見用法

由于?lambda?語法是固定的,其本質(zhì)上只有一種用法,那就是定義一個(gè)?lambda?函數(shù)。
在實(shí)際中,根據(jù)?lambda?函數(shù)使用場(chǎng)景的不同,可以將?lambda?函數(shù)的用法進(jìn)行簡(jiǎn)單擴(kuò)展

  • 將?lambda?函數(shù)賦值給一個(gè)變量,通過變量間接調(diào)用該?lambda?函數(shù)。以下例子在定義加法函數(shù)后將其賦值給了變量?add,這樣變量?add?就指向了具有加法功能的函數(shù)。
add=lambda x,y:x+y
print(add(3,4))
7
  • 將?lambda?函數(shù)賦值給其他函數(shù),從而將其他函數(shù)用該?lambda?函數(shù)替換。以下例子改變了內(nèi)置函數(shù)?sum?的求和功能。
print(sum[1, 2, 3, 4, 5], 20)

sum = lambda *args: None

print(sum[1, 2, 3, 4, 5], 20)
35
None
  • 將?lambda?函數(shù)作為參數(shù)傳遞給其他函數(shù)。
  • map() 函數(shù):

    • 描述:

    map()?會(huì)根據(jù)提供的函數(shù)對(duì)指定序列做映射。
    第一個(gè)參數(shù)?function?以參數(shù)序列中的每一個(gè)元素調(diào)用?function?函數(shù),返回包含每次?function?函數(shù)返回值的新列表。

    • 語法:

    map(function, iterable, ...)

    • 參數(shù):

    function:函數(shù)
    iterable:一個(gè)或多個(gè)序列

    • 返回值:

    Python 3.x 版本返回的是迭代器

    • 示例:
# 計(jì)算 x 的平方
def square(x):
    return x ** 2

# 一. 通過 map() 和 square() 計(jì)算列表各個(gè)元素的平方
result = list(map(square, [1, 2, 3, 4, 5]))
print('test_1:', result)

# 匿名函數(shù)寫法
# 二. 通過 map() 和 lambda 計(jì)算列表各個(gè)元素的三次方
result = list(map(lambda x: x ** 3, [1, 2, 3, 4, 5]))
print('test_2:', result)

# 三. 提供兩個(gè)列表,將其相同索引位置的列表元素進(jìn)行相加
result = list(map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10]))
print('test_3:', result)

# 四. 列表長(zhǎng)度不同時(shí),相加后的結(jié)果列表長(zhǎng)度為較小列表的長(zhǎng)度
result = list(map(lambda x, y: x + y, [1, 3, 5, 7, 9, 11, 13], [2, 4, 6, 8, 10]))
print('test_4:', result)

result = list(map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10, 12, 14]))
print('test_5:', result)
test_1: [1, 4, 9, 16, 25]
test_2: [1, 8, 27, 64, 125]
test_3: [3, 7, 11, 15, 19]
test_4: [3, 7, 11, 15, 19]
test_5: [3, 7, 11, 15, 19]
  • sorted() 函數(shù):

    • 描述:

    sorted()?函數(shù)對(duì)所有可迭代的對(duì)象進(jìn)行排序操作。

    • 與?sort()?的區(qū)別:

    sort()?是 list 的一個(gè)方法,而?sorted()?可以對(duì)所有可迭代的對(duì)象進(jìn)行排序操作。
    list 的?sort()?方法返回的是對(duì)已經(jīng)存在的列表進(jìn)行操作,無返回值,而內(nèi)建函數(shù)?sorted()?方法返回的是一個(gè)新的 list,而不是在原來的基礎(chǔ)上進(jìn)行的操作。

    • 語法:

    sorted(iterable, /, *, key=None, reverse=False)

    • 參數(shù)說明:

    iterable:可迭代對(duì)象。
    key?:主要是用來進(jìn)行比較的元素,只有一個(gè)參數(shù),具體的函數(shù)的參數(shù)就是取自于可迭代對(duì)象中,指定可迭代對(duì)象中的一個(gè)元素來進(jìn)行排序。
    reverse:排序規(guī)則,reverse = True?降序 ,?reverse = False?升序。

    • 返回值:

    返回重新排序的列表。

    • 示例:
      # 通過 sorted() 排序,不改變?cè)斜?a = [4, 7, 2, 1, 3, 5, 9, 10]
      b = sorted(a)
      print('a:', a)
      print('b:', b)
      
      test = [('b', 6), ('c', 2), ('b', 3), ('d', 9), ('a', 10), ('f', 4), ('b', 5), ('a', 2)]
      # 一. 利用參數(shù) key 和 lambda 對(duì)函數(shù)內(nèi)的容器元素以下標(biāo)為 0 的元素進(jìn)行升序排序
      # 若下標(biāo)為 0 的元素相同則按照原數(shù)組的先后順序排序
      result = sorted(test, key=lambda x: x[0])
      print('test_1:', result)
      
      # 二. 利用參數(shù) key 和 lambda 對(duì)函數(shù)內(nèi)的容器元素以下標(biāo)為 1 的元素進(jìn)行升序排序
      # 若下標(biāo)為 1 的元素相同則按照原數(shù)組的先后順序排序
      result = sorted(test, key=lambda x: x[1])
      print('test_2:', result)
      
      # 三. 利用參數(shù) key 和 lambda 對(duì)函數(shù)內(nèi)的容器元素以下標(biāo)為 1 的元素進(jìn)行降序排序
      # 若下標(biāo)為 1 的元素相同則按照原數(shù)組的先后順序排序
      result = sorted(test, key=lambda x: x[1], reverse=True)
      print('test_3:', result)
      test_1: [('a', 10), ('a', 2), ('b', 6), ('b', 3), ('b', 5), ('c', 2), ('d', 9), ('f', 4)]
      test_2: [('c', 2), ('a', 2), ('b', 3), ('f', 4), ('b', 5), ('b', 6), ('d', 9), ('a', 10)]
      test_3: [('a', 10), ('d', 9), ('b', 6), ('b', 5), ('f', 4), ('b', 3), ('c', 2), ('a', 2)]
  • filter() 函數(shù):

    • 描述:

    filter()?函數(shù)用于過濾序列,過濾掉不符合條件的元素,返回由符合條件元素組成的新列表。該函數(shù)接收兩個(gè)參數(shù),第一個(gè)為函數(shù),第二個(gè)為序列,序列的每個(gè)元素作為參數(shù)傳遞給函數(shù)進(jìn)行判,然后返回 True 或 False,最后將返回 True 的元素放到新列表中。

    • 語法:

    filter(function, iterable)

    • 參數(shù):

    function:判斷函數(shù)。
    iterable:可迭代對(duì)象。

    • 返回值:

    Python3.x 返回迭代器對(duì)象

    • 示例:
      # 判斷 x 是否是奇數(shù)
      def is_odd(x):
          return x % 2 == 1
      
      # 一. 通過 filter() 和 is_odd() 篩選列表奇數(shù)元素
      result = list(filter(is_odd, [1, 2, 3, 4, 5, 6]))
      print('test_1:', result)
      
      # 匿名函數(shù)寫法
      # 二. 通過 filter() 和 lambda 篩選列表偶數(shù)元素
      result = list(filter(lambda x: x % 2 == 0, [1, 2, 3, 4, 5, 6]))
      print('test_2:', result)
      test_1: [1, 3, 5]
      test_2: [2, 4, 6]

?文章來源地址http://www.zghlxwxcb.cn/news/detail-459078.html

到了這里,關(guān)于python——lambda函數(shù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Lambda表達(dá)式和匿名內(nèi)部類的區(qū)別

    匿名內(nèi)部類:可以是接口,也可以是抽象類,還可以是具體類 Lambda表達(dá)式:只能是接口 如果接口中有且僅有一個(gè)抽象方法,可以使用Lambda表達(dá)式,也可以使用匿名內(nèi)部類 如果接口中多于一個(gè)抽象方法,只能使用匿名內(nèi)部類,而不能使用Lambda表達(dá)式 匿名內(nèi)部類:編譯之后,產(chǎn)

    2024年02月10日
    瀏覽(17)
  • CSharp的lambda表達(dá)式匿名類擴(kuò)展方法

    CSharp的lambda表達(dá)式匿名類擴(kuò)展方法

    之前已經(jīng)寫過一些關(guān)于委托還有事件的文章,今天就來介紹一下lambda表達(dá)式。 首先定義需要的函數(shù)以及委托 在.net farmwork 1.0,會(huì)這樣寫我們的匿名函數(shù) 在.netframework 2.0,會(huì)這樣寫匿名函數(shù), 增加了一個(gè)delegate 在.netframework3.0,去掉了delegate了,在參數(shù)后增加了一個(gè)=

    2024年03月14日
    瀏覽(23)
  • C#學(xué)習(xí)相關(guān)系列之匿名方法和Lambda表達(dá)式

    ????????匿名方法 顧名思義就是這類方法的特點(diǎn)是不需要特別去定義函數(shù)的名字的。一般我們需要一個(gè)函數(shù),但又不想花時(shí)間去命名它的時(shí)候,就可以使用匿名方法。在 C# 中, 匿名方法通常表現(xiàn)為使用?delegate?運(yùn)算符和 Lambda 表達(dá)式。( Lambda 表達(dá)式 的本質(zhì)也是 匿名方法

    2024年02月07日
    瀏覽(26)
  • 第六章(7):Python中的函數(shù)—lambda表達(dá)式

    是一種匿名函數(shù)的定義方式,它可以替代函數(shù)定義的方式,使代碼更加簡(jiǎn)潔和易讀。Lambda表達(dá)式的語法形式為:lambda 參數(shù)列表: 表達(dá)式,其中參數(shù)列表和表達(dá)式都是可選的,但是在大多數(shù)情況下都需要用到它們。Lambda表達(dá)式通常被用在需要傳遞函數(shù)對(duì)象作為參數(shù)的函數(shù)中,也

    2024年02月08日
    瀏覽(26)
  • 【Python小技巧】通過實(shí)例說明推導(dǎo)式,條件表達(dá)式和Lambda函數(shù)

    按照國(guó)際慣例,首先聲明:本文只是我自己學(xué)習(xí)的理解,雖然參考了他人的寶貴見解及成果,但是內(nèi)容可能存在不準(zhǔn)確的地方。如果發(fā)現(xiàn)文中錯(cuò)誤,希望批評(píng)指正,共同進(jìn)步。 本文總結(jié)在Python編程中會(huì)使用到的三個(gè)(高階)小技巧:推導(dǎo)式,條件表達(dá)式和Lambda函數(shù),并通過實(shí)

    2024年03月27日
    瀏覽(23)
  • 匿名/箭頭函數(shù),立即執(zhí)行函數(shù)IIFE;函數(shù)聲明式和函數(shù)表達(dá)式

    匿名/箭頭函數(shù),立即執(zhí)行函數(shù)IIFE;函數(shù)聲明式和函數(shù)表達(dá)式

    目錄 匿名/箭頭函數(shù):簡(jiǎn)潔 繼承上一層作用域鏈的this 不綁定arguments,用rest參數(shù) ?rest 參數(shù):...真正的數(shù)組 因?yàn)闆]有function聲明,所以沒有原型prototype,所以不能作為構(gòu)造函數(shù) 當(dāng)函數(shù)體只有一句時(shí),可省 return ,?{} IIFE:()()(立即調(diào)用函數(shù)表達(dá)式)/自執(zhí)行匿名函數(shù) 函數(shù)定義方式

    2024年01月19日
    瀏覽(17)
  • Lambda表達(dá)式 & 函數(shù)式接口 & Stream流

    Lambda表達(dá)式 & 函數(shù)式接口 & Stream流

    目錄 一.?Lambda表達(dá)式 1. 函數(shù)式編程思想概述 2.?Lambda的優(yōu)化 3. Lambda的格式 標(biāo)準(zhǔn)格式: 參數(shù)和返回值: 省略格式: 4.?Lambda的前提條件 ?二. 函數(shù)式接口 1.?概述 格式 FunctionalInterface注解 2.?常用函數(shù)式接口 Supplier接口 Consumer接口 Function接口 Predicate接口 三. Stream流 1 引言 2.?流式思

    2024年02月08日
    瀏覽(25)
  • 【Go 基礎(chǔ)篇】Go語言匿名函數(shù)詳解:靈活的函數(shù)表達(dá)式與閉包

    【Go 基礎(chǔ)篇】Go語言匿名函數(shù)詳解:靈活的函數(shù)表達(dá)式與閉包

    在Go語言中,函數(shù)是一等公民,這意味著函數(shù)可以像其他類型的值一樣被操作、傳遞和賦值。匿名函數(shù)是一種特殊的函數(shù),它沒有固定的函數(shù)名,可以在代碼中被直接定義和使用。匿名函數(shù)在Go語言中具有重要的地位,它們常用于實(shí)現(xiàn)閉包、函數(shù)式編程和并發(fā)編程等領(lǐng)域。 本

    2024年02月11日
    瀏覽(38)
  • Java8函數(shù)式編程(Lambda表達(dá)式)

    Lambda 表達(dá)式是一個(gè)匿名方法,將行為像數(shù)據(jù)一樣進(jìn)行傳遞。 Lambda 表達(dá)式的常見結(jié)構(gòu):BinaryOperatorInteger add = (x, y) → x + y。 函數(shù)接口指僅具有單個(gè)抽象方法的接口,用來表示 Lambda 表達(dá)式的類型。 Stream 是用函數(shù)式編程方式在集合類上進(jìn)行復(fù)雜操作的工具。 這行代碼并未做什

    2024年02月16日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包