匿名函數(shù)排序python 有名函數(shù) 匿名函數(shù)

Python中的匿名函數(shù)——lambda函數(shù)

在Python中,lambda函數(shù)是一個簡單的匿名函數(shù)。該函數(shù)沒有函數(shù)名,它可以有多個參數(shù),但函數(shù)只由一個表達式構(gòu)成。

我們提供的服務(wù)有:網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、鶴山ssl等。為千余家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的鶴山網(wǎng)站制作公司

lambda函數(shù)具體的格式如下:

lambda 參數(shù) : 表達式

其中, lambda 是關(guān)鍵字, 參數(shù) 是函數(shù)的參數(shù),可以有0至多個。冒號后面是表達式,也是該函數(shù)中的唯一的表達式,lambda函數(shù)會返回該表達式的返回值。

我們來看一個具體的例子。

在上述代碼中,number1, number2是lambda函數(shù)的參數(shù),number1**2+number**2是函數(shù)的表達式,該函數(shù)返回number1, number2兩個數(shù)的平方和。

上述代碼創(chuàng)建了一個lambda函數(shù)后將其賦值給變量sum_square, 在print函數(shù)中通過sum_square來調(diào)用這個lambda函數(shù)。

上述的lambda函數(shù)完全可用標(biāo)準(zhǔn)的函數(shù)來實現(xiàn),我們可以將上述代碼改寫成下面的代碼。

在代碼中,定義了函數(shù)sum_square,該函數(shù)包含兩個參數(shù),并執(zhí)行一條語句并將該語句的執(zhí)行結(jié)果作為函數(shù)返回值。通過上述代碼可以幫助我們更直觀地理解lambda函數(shù)。

lambda函數(shù)的可讀性較差,那么為什么要有這樣奇怪的匿名函數(shù)呢?這個要從lambda的使用場合說起。我們來看下面的代碼。

上述代碼定義了一個數(shù)值列表,調(diào)用python的內(nèi)置函數(shù)filter來生成一個新的迭代器。 filter函數(shù)的第一個參數(shù)為一個函數(shù),用于決定過濾的方法;第二個參數(shù)為一個可迭代的對象如列表、集合等。filter函數(shù)返回一個新的迭代器, 用于獲得滿足第一個函數(shù)為真的所有元素。在上述代碼中,我們給filter傳遞的第一個參數(shù)是一個匿名函數(shù):lambda number:number%3==0, 該函數(shù)在一個數(shù)整除3時為True,否則為False. filter函數(shù)會創(chuàng)建一個新的迭代器,通過調(diào)用上述匿名函數(shù)來判斷該元素是否滿足條件,得到所有3的倍數(shù)的數(shù)。

當(dāng)然,上述代碼也可以使用正常的函數(shù)方式來實現(xiàn),如下所示:

我們可以看到,所有匿名函數(shù)的功能都可以通過標(biāo)準(zhǔn)函數(shù)來實現(xiàn)。匿名函數(shù)常在調(diào)用其它函數(shù)(如filter, map等)時作為參數(shù)使用。使用匿名函數(shù)可以使代碼更為精簡。匿名函數(shù)主要用于完成簡單的任務(wù),如果匿名函數(shù)過于復(fù)雜,會導(dǎo)致可讀性較差,調(diào)試起來也比較困難,因此,強烈不建議使用lambda寫天書般的代碼??傊?,要根據(jù)實際情況決定是否使用匿名函數(shù)。

python sorted排序:使用lambda應(yīng)對各種復(fù)雜情況的排序,包括list嵌套dict

原文鏈接

一、需要用到的函數(shù)

需要用到的函數(shù)很少,基本上就是sorted()和lambda。

sorted()

sorted()函數(shù)原型:

Python

sorted(iterable[,key][,reverse])

可見sorted()可以接受3個參數(shù),需要排序的變量必不可少,然后是key指定排序的元素,reverse指定是否逆序。

lambda

lambda實際上就是匿名函數(shù)

一般形式:

Python

lambda arguments: expression

寫成函數(shù)形式就是

Python

def lambda(arguments):

return expression

當(dāng)lambda和sorted()的key參數(shù)結(jié)合就有意想不到的效果了。

二、各種排序

1.簡單list排序

Python

lis = ['a', 'b', 'c']

print(sorted(lis))

print(sorted(lis, reverse=True))

2.dict的key排序

Python

dic = {'c': 1, 'b': 2, 'a': 3}

print(sorted(dic))

print(sorted(dic, reverse=True))

3.dict的value排序

Python

dic = {'c': 1, 'b': 2, 'a': 3}

print(sorted(dic, key=lambda k: dic[k]))

print(sorted(dic, key=lambda k: dic[k], reverse=True))

4.list內(nèi)嵌套list排序

Python

lis = [[4, 2, 9], [1, 5, 6], [7, 8, 3]]

print(sorted(lis, key=lambda k: k[0]))

print(sorted(lis, key=lambda k: k[1]))

print(sorted(lis, key=lambda k: k[2]))

print(sorted(lis, key=lambda k: k[0], reverse=True))

5.dict內(nèi)嵌套dict排序

Python

dic = {

'a': {'x': 3, 'y': 2, 'z': 1},

'b': {'x': 2, 'y': 1, 'z': 3},

'c': {'x': 1, 'y': 3, 'z': 2},

}

print(sorted(dic, key=lambda k: dic[k]['x']))

print(sorted(dic, key=lambda k: dic[k]['y']))

print(sorted(dic, key=lambda k: dic[k]['z']))

print(sorted(dic, key=lambda k: dic[k]['x'], reverse=True))

6.list內(nèi)嵌套dict排序

Python

lis = [

{'x': 3, 'y': 2, 'z': 1},

{'x': 2, 'y': 1, 'z': 3},

{'x': 1, 'y': 3, 'z': 2},

]

print(sorted(lis, key=lambda k: k['x']))

print(sorted(lis, key=lambda k: k['y']))

print(sorted(lis, key=lambda k: k['z']))

print(sorted(lis, key=lambda k: k['x'], reverse=True))

7.dict內(nèi)嵌套list排序

Python

dic = {

'a': [1, 2, 3],

'b': [2, 1, 3],

'c': [3, 1, 2],

}

print(sorted(dic, key=lambda k: dic[k][0]))

print(sorted(dic, key=lambda k: dic[k][1]))

print(sorted(dic, key=lambda k: dic[k][2]))

print(sorted(dic, key=lambda k: dic[k][0], reverse=True))

三、其他更深層嵌套排序

更深層嵌套排序方法和上面介紹的大同小異,實際就是lambda的操作;需要注意的就是dict的排序只會取其key,所以需要lambda首先將其轉(zhuǎn)換為value才能操作value排序。

Python-匿名函數(shù)

匿名函數(shù):使用lambda創(chuàng)建的函數(shù),所謂匿名,意即不再使用def語句這樣標(biāo)準(zhǔn)的形式定義一個函數(shù)。

好處:

1、使用Python寫一些執(zhí)行腳本時,使用lambda可以省去定義函數(shù)的過程,讓代碼更加精簡。

2、對于一些抽象的,不會別的地方再復(fù)用的函數(shù),有時候給函數(shù)起個名字也是個難題,使用lambda不需要考慮命名的問題。

3、使用lambda在某些時候讓代碼更容易理解。了解更多python匿名函數(shù)相關(guān)知識,可以來老男孩教育。

應(yīng)用場景:經(jīng)常與一些內(nèi)置函數(shù)相結(jié)合使用,比如說map()、filter()、sorted()、reduce()等。

表達式格式:lambda 參數(shù)列表:lambda體

網(wǎng)站題目:匿名函數(shù)排序python 有名函數(shù) 匿名函數(shù)
文章路徑:http://muchs.cn/article34/docoipe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、網(wǎng)站維護、、自適應(yīng)網(wǎng)站、營銷型網(wǎng)站建設(shè)、Google

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設(shè)計公司