python中lambda函式的妙用

2021-09-28 15:35:35 字數 2768 閱讀 9309

(1)定義:lambda表示式,又名匿名表示式。是指一類無需定義識別符號(函式名)的函式或子程式,通俗來說是指你需要乙個函式,卻又不想去給這個函式命名。

(2)格式:lambda 引數 :返回值,其中引數可以是乙個也可以是多個。

(3)注意:lambda 並不會帶來程式執行效率的提高,只會使**更簡潔。

(1)求兩數的和

完整函式實現如下:

>>

>

defadd

(x,y)

:return x + y

>>

> add(3,

4)7

等價的lambda函式實現為:

>>

> res =

lambda x,y:x + y

>>

> res(3,

4)7

(2)lambda函式在排序中的應用

lambda在列表中的排序:

>>

> a =[[

1,9]

,[3,

11],[

5,7]

]>>

> a.sort(key =

lambda p: p[0]

**2+ p[1]

**2)# 按照到原點距離排序

>>

>

print

(a)[[5

,7],

[1,9

],[3

,11]]

lambda在字典中的排序:

>>

> a =

>>

>

sorted

(a,key =

lambda x:a[x]

)# 按照鍵所對應的值從小到大對鍵排列[2

,4,1

]sorted

(a,key =

lambda x:

-a[x]

)# 按照鍵所對應的值從大到小對鍵排列[1

,4,2

]

lambda在字串中的排序:

問題1:【leetcode 179】給定一組非負整數,重新排列它們的順序使之組成乙個最大的整數。

def

largestnumber

(nums):if

any(nums)

:from functools import cmp_to_key

nums =

sorted([

str(m)

for m in nums]

, key=cmp_to_key(

lambda x, y:

int(x + y)

-int

(y + x)

), reverse=

true

)return

''.join(nums)

return

'0'nums =[3

,30,34

,5,9

]a = largestnumber(nums)

print

(a)ans:

9534330

python3中的cmp_to_key等價於python2中的cmp。cmp_to_key()有兩個傳入引數x,y :

① 當x>y時,返回1。

② 當x=y時,返回0。

③ 當x

列表中的工作機制就是將列表中的元素兩兩比較,返回值是正數時交換兩元素

問題2:【leetcode 524】給定乙個字串和乙個字串字典,找到字典裡面最長的字串,該字串可以通過刪除給定字串的某些字元來得到。如果答案不止乙個,返回長度最長且字典順序最小的字串。如果答案不存在,則返回空字串。

def

findlongestword

(s, d)

: d.sort(key=

lambda x:[-

len(x)

, x]

)# 首先按照字串的長短進行排序,然後按照字母順序排序,其中的也可換成()

res =

''for i in d:

# i取其中的乙個字串

index =

0# 索引

flag =

1# 判斷是否正常退出for迴圈

for j in i:

# j取字串中的乙個字元

k = s.find(j, index)

# 從s的索引為inde開始查詢s中是否包含j,如果找到返回索引,否則-1

if k ==-1

:# 沒有找到

flag =

0# 異常退出

break

index = k +

1if flag ==1:

res = i

break

return res

s ="abpcplea"

d =[

"ale",,

"monkey"

,"plea"

]print

(findlongestword(s, d)

)ans:

d.sort(key=lambda x: [-len(x), x]) # 首先按照字串的長短進行排序,然後按照字母順序排序,其中的也可換成()

python中的lambda函式

lambda函式也叫匿名函式,即,函式沒有具體的名稱。先來看乙個最簡單例子 deff x returnx 2printf 4 python中使用lambda的話,寫成這樣 g lambdax x 2printg 4 lambda表示式在很多程式語言都有對應的實現。比如c varg x x 2cons...

python中的lambda函式

今天學習python裡面的高階函式map f list 的時候看見這樣一行 print map lambda x x 3,range 6 我已經知道 map函式的首個引數是乙個函式,後面的乙個或者多個list or tuple作為第乙個引數 也就是那個函式 的引數,以map的方式遍歷執行,並返回乙個...

Python中的lambda函式

python中的lambda函式 在python中,我們使用lambda關鍵字來宣告乙個匿名函式,這就是為什麼我們將它們稱為 lambda函式 匿名函式是指沒有宣告函式名稱的函式。儘管它們在語法上看起來不同,lambda函式的行為方式與使用def關鍵字宣告的一般函式相同。以下是python中 lam...