(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...