溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Python中Lambda的案例分析

發(fā)布時(shí)間:2020-08-03 15:15:14 來源:億速云 閱讀:224 作者:清晨 欄目:編程語言

這篇文章將為大家詳細(xì)講解有關(guān)Python中Lambda的案例分析,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

Lambda是Python里的高階用法,要把代碼寫得Pythonic,就需要了解這些高階用法,想說自己是一名真正的Python程序員,先要把代

碼寫得Pythonic。

今天聊下Lambda的用法,寫篇簡(jiǎn)短的用法說明。

Lambda是匿名函數(shù)的意思,在程序中有些簡(jiǎn)單的函數(shù)我們可能只會(huì)使用一兩次,這種情況下,你不必把它寫成一個(gè)函數(shù),而是用

Lambda的寫法,來讓程序更簡(jiǎn)潔。

Lambda的寫法原型是:

lambda 參數(shù):操作(參數(shù))

冒號(hào)左邊是傳入的參數(shù),冒號(hào)右邊是使用參數(shù)要做的操作。

比如

lambda x:x+1

上面的寫法等同于如下寫法,給參數(shù)加1,再返回:

def plus(x):
return x+1

比如

lambda x,y:x*y

上面的寫法等同于:

def mul(x,y):
retuen x*y

舉幾個(gè)實(shí)際的例子:

1、比如對(duì)list排序,如下簡(jiǎn)單的list
nums = [3, 1, 7, 4, 8, 10]
對(duì)nums按降序排列,這個(gè)很簡(jiǎn)單是吧:

>>>nums = [3, 1, 7, 4, 8, 10]>>>sorted(nums, reverse=True)>>>[10, 8, 7, 4, 3, 1]

如果是對(duì)嵌套list排序呢?
比如:nums = [[10, 20, 11], [3, 9, 6], [8, 14, 3]]
我們想按每個(gè)元素里的第二個(gè)值降序排列

直接用上面sorted的寫法就沒法排序,這個(gè)時(shí)候用lambda就很方便:

>>>nums = [[10, 20, 11], [3, 9, 6], [8, 14, 3]]
>>>sorted(nums, key=lambda x:x[1], reverse=True)
>>>[[10, 20, 11], [8, 14, 3], [3, 9, 6]]

這個(gè)嵌套列表就按沒想元素的第二個(gè)值降序排列好了,這個(gè)lambda的意思是返回元素的第二個(gè)值,它的寫法等同于如下:

>>>def lis(x):
>>> return x[1]
>>>sorted(nums, key=lis, reverse=True)
>>>[[10, 20, 11], [8, 14, 3], [3, 9, 6]]

比較一下,用lambda寫代碼要簡(jiǎn)介很多。

2.再比如按字典的value進(jìn)行降序排序

nums = {'yuan':80, 'ren':93, 'xue':60}
nums = {'yuan':80, 'ren':93, 'xue':60}
sorted(nums, key=lambda x: nums[x], reverse=True)

3.比如想取列表里的最大值
nums = [‘1’, ‘100’, ‘111’, ‘2’, 2, 2.57]
但是列表里還有字符串,沒法直接比較大小,怎么做,用lambda來處理。

>>>nums = ['1', '100', '111', '2', 2, 2.57]
>>>max(nums, key=lambda x:int(x))
>>>'111'

這個(gè)寫法等同于

def trsn(x):
return int(x)
max(nums, key=trsn)

如果lambda結(jié)合map , filter 等高階Python語法,還有更多的用法。

如上用lambda的好處是,讓代碼更簡(jiǎn)潔,這是程序員對(duì)代碼的一種追求。壞處就是讓程序不太容易看懂,不過只要你搞清楚了lambda的用法,也沒那么難懂。

關(guān)于Python中Lambda的案例分析就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI