Python基礎 42 匿名函式lambda

2021-09-23 07:39:32 字數 2098 閱讀 1613

lambda是乙個匿名函式,在定義函式的時候,不想給函式起乙個名字時可以使用匿名函式,用乙個變數儲存結果即可。通常這個

匿名函式是不會被重複使用的

語法:lambda 引數:表示式

注:不能有迴圈和return

demo1定義乙個匿名函式

# 定義乙個匿名函式實現加法計算

sum_res = lambda x,y:x+y

# 呼叫函式,傳入引數x=10,y=20

print("結果顯示:",sum_res(10,20)) # 結果顯示: 30

demo2匿名函式有預設引數

# 定義乙個含有預設值的匿名函式實現加法計算

sum_res = lambda x,y=100:x+y

# 呼叫函式,傳入引數x=10,y不傳預設為100

print("結果顯示:",sum_res(10)) # 結果顯示: 110、

demo3匿名函式有元組引數組

# 定義乙個匿名函式實現返回不定數的字串返回

str_res = lambda *args:args

# 呼叫函式,傳入引數

print("結果顯示:",str_res("suner")) # 返回的是元組('suner',)

print("結果顯示:",str_res("suner","wang")) # 返回的是元組('suner', 'wang')

demo4匿名函式有字典引數組

# 定義乙個匿名函式實現不定數的字典返回

info_res = lambda **kwargs:kwargs

# 呼叫函式,傳入不定數引數

print("結果顯示:",info_res(name="suner")) # 返回的是字典:

print("結果顯示:",info_res(name="suner",age=18)) # 返回的是字典:

demo5匿名函式作為引數傳入

# lambda函式作為引數傳入

def sum_func(x,y,func):

res = func(x,y)

return res

# 呼叫函式

print(sum_func(50,30,lambda x,y:x+y))

demo6匿名函式結合map()

# 判斷傳入的字串列表是否全部為大寫

res = map(lambda str_:str_.isupper(),["suner","wjk","wjk","sun"])

print(list(res)) # 需要list轉成列表顯示結果:[false, false, true, true]

demo6匿名函式結合reduce()

from functools import reduce

res = reduce(lambda x,y:x+y,[10,20,30,40,50])

print(res) # 結果顯示:150

demo6匿名函式結合filter()

# 判斷傳入的字串列表是否全部為大寫,返回正確的結果

res = filter(lambda str_:str_.isupper(),["suner","wjk","wjk","sun"])

print(list(res)) # 需要list轉成列表顯示結果:['wjk', 'sun']

demo7匿名函式結合sorted()

# 對乙個字典列表按年齡公升序排列

info_list = [,,]

info_list.sort(key=lambda x:x["age"])

print(info_list) # [, , ]

python基礎 匿名函式

lambda匿名函式可以實現簡單的功能 sum lambda x,y x y print sum 4,2 結果為6def values a,b,fun print fun a,b values 11,22,lambda x,y x y 結果為33大資料要用到的三個重要函式 filter函式 filt...

Python基礎 匿名函式

當我們在傳入函式時,有些時候,不需要顯式地定義函式,直接傳入匿名函式更方便。在python中,對匿名函式提供了有限支援。還是以map 函式為例,計算f x 的函式外,還可以直接傳入匿名函式 print list map lambda x x x,1,2,3,4,5,6,7,8,9 輸出 1,4,9,...

python基礎 匿名函式

匿名函式的關鍵字為 lambda 冒號前面是形參 冒號後面是返回值 def fun args,kwargs return args,kwargs print fun 1,2,3,4,5 上面三行可以用下面以行代替 print lambda args,kwargs args,kwargs def ad...