匿名機能
lambda x , y : x+y
匿名性の目的は名前を持たないことです。匿名関数に名前を割り当てることは無意味です。
匿名関数のパラメーター規則とスコープの関係は、よく知られている関数のものと同じです。
匿名関数の本体は通常式である必要があり、式には戻り値が必要です。
f=lambda x,n:x ** n
print(f(2,3))
ラムダ匿名関数の適用:** max、min、sorted、map、reduce、filter **
最高の給与を求めて:最大
salaries={'egon':3000,'alex':100000000,'wupeiqi':10000,'yuanhao':2000}
def get(k):return salaries[k]print(max(salaries,key=get)) #'alex'print(max(salaries,key=lambda x:salaries[x]))
info =[{'name':'egon','age':'18','salary':'3000'},{'name':'wxx','age':'28','salary':'1000'},{'name':'lxx','age':'38','salary':'2000'}]max(info, key=lambda dic:int(dic['salary']))max([11,22,33,44,55])
最低賃金を求める人:分
salaries={'egon':3000,'alex':100000000,'wupeiqi':10000,'yuanhao':2000}print(min(salaries,key=lambda x:salaries[x])) # 'yuanhao'
info=[{'name':'egon','age':'18','salary':'3000'},{'name':'wxx','age':'28','salary':'1000'},{'name':'lxx','age':'38','salary':'2000'}]min(info,key=lambda dic:int(dic['salary']))
sortは、salaryに従ってsalary辞書をソートします
salaries={'egon':3000,'alex':100000000,'wupeiqi':10000,'yuanhao':2000}
alaries=sorted(salaries) #デフォルトで辞書キーで並べ替え
print(salaries)
# salaries=sorted(salaries,key=lambda x:salaries[x]) #デフォルトは昇順です
alaries=sorted(salaries,key=lambda x:salaries[x],reverse=True) #降順
print(salaries)
info=[{'name':'egon','age':'18','salary':'3000'},{'name':'wxx','age':'28','salary':'1000'},{'name':'lxx','age':'38','salary':'2000'}]
l=sorted(info,key=lambda dic:int(dic['salary']))
マップマッピング、ループ各要素に関数を実行させ、各関数の実行結果を新しいリストに保存します
v1 =[11,22,33,44]
result =map(lambda x:x+100,v1) #最初のパラメータは実行される関数です,2番目のパラメーターは反復可能な要素です.print(list(result)) # [111,122,133,144]
names=['alex','wupeiqi','yuanhao','egon']
res=map(lambda x:x+'_NB'if x =='egon'else x +'_SB',names)print(list(res))
パラメータシーケンスの要素を減らし、蓄積します
import functools
v1 =['wo','hao','e']
def func(x,y):return x+y
result = functools.reduce(func,v1)print(result) # wohaoe
result = functools.reduce(lambda x,y:x+y,v1)print(result) # wohaoe
from functools import reduce
l=['my','name','is','alex','alex','is','sb']
res=reduce(lambda x,y:x+' '+y+' ',l)print(res)
# my name is alex alex is sb
フィルター、条件でフィルター
result=filter(lambda x:x 2,[1,2,3,4])print(list(result))
v1 =[11,22,33,'asd',44,'xf']
# 一般的な慣行
def func(x):iftype(x)== int:return True
return False
result =filter(func,v1)print(list(result)) # [11,22,33,44]
# 簡素化されたアプローチ
result =filter(lambda x: True iftype(x)== int else False ,v1)print(list(result))
# ミニマリストアプローチ
result =filter(lambda x:type(x)== int ,v1)print(list(result))
names=['alex_sb','wxx_sb','yxx_sb','egon']
res=filter(lambda x:True if x.endswith('sb')else False,names)
res=filter(lambda x:x.endswith('sb'),names)print(list(res)) #['alex_sb','wxx_sb','yxx_sb']
ages=[18,19,10,23,99,30]
res=filter(lambda n:n =30,ages)print(list(res)) #[99,30]
salaries={'egon':3000,'alex':100000000,'wupeiqi':10000,'yuanhao':2000}
res=filter(lambda k:salaries[k]=10000,salaries)print(list(res)) #['alex','wupeiqi']
コンテンツの拡張:
匿名の関数呼び出し
ステップ1:変数を介して作成された匿名関数を受け取ります。
ステップ2:変数を使用して匿名関数を呼び出します。
例えば
最初のステップ:匿名関数を作成します。役割は、2つの数値の合計を達成することです。
lambda num1 , num2 : num1 + num2
ステップ2:変数を使用してこの匿名関数を受信します
sum = lambda num1 , num2 : num1 + num2
ステップ3:この匿名関数を呼び出す
sum(10 , 20)
これまで、Pythonの匿名関数とは何かに関するこの記事を紹介しました。より関連性の高いPython匿名関数の知識の概要コンテンツについては、ZaLou.Cnを検索してください。
Recommended Posts