匿名函數 lambda
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")) # 返回的是字典:{'name': 'suner'}
print("結果顯示:",info_res(name="suner",age=18)) # 返回的是字典:{'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 = [{"name":"suner","age":18},{"name":"suner1","age":20},{"name":"suner2","age":17}]
info_list.sort(key=lambda x:x["age"])
print(info_list) # [{'name': 'suner2', 'age': 17}, {'name': 'suner', 'age': 18}, {'name': 'suner1', 'age': 20}]