関数のパラメータとしての機能への高階関数
参考リンク
環境
python3.6
地図
map
関数は、2つのパラメータ、関数をとり、aが配列され、map
機能が順次最終結果発生戻るように、インデックスに対応する配列の各要素に適用渡されます。パラメータは、シーケンスの複数のシーケンスを渡すことができます
1.ときに複数の配列、すべての要素の最短の配列の長さは、全体マップ関数の終わりにマッピングされている場合
コレクションからイテレータインポート a_li、b_li、c_li =リスト(範囲(10))、リスト(範囲104)、リスト(範囲(1、15)) X + Y +:M1 =マップ(ラムダX、Y、ZをZ、a_li、b_li、c_li) プリント(でisinstance(M1、イテレータ)) プリント(リスト(M1))
全ての最短の配列の要素のみが発電反復に戻し、結果は
真
[1、4、7、10、13、16、19、22、25、28]
2.無名関数の関数のパラメータを使用することに加えて、あなたはまた、カスタムマッピング機能を使用することができます
DEF map_func(X、Y、Z): リターンX + Y + Z + 10 、M2 =マップ(map_func、a_li、b_li、c_li) プリント(リスト(M2))
関数名に渡され、結果があります
[11、14、17、20、23、26、29、32、35、38]
減らします
、関数は、2つのパラメータを受け取る必要がありますシーケンス[X1、X2、X3 ...]上の関数に削減し、累積ベースを行うシーケンスの次の要素の結果を削減し続け、効果があります
低減(F、[X1、X2、X3、X4])は、F(F(F(X1、X2)、X3)、X4)=
1.数値文字列を整数にします
S = "12344" num_dic = {NUM "0123456789"でnumのINT(NUM)} (:X * 10 + Y、マップ(ラムダI:num_dic [i]は、S)ラムダx、y)のRESは=削減 印刷を(RES)
、結果は整数匿名関数に従ってデジタル・シーケンス発生器と戻り、redcue配列に文字列をマッピング
12344
最初のパラメータは、初期パラメータの初期化無名関数を減らすために、初期= 9
RES2 =減らす(ラムダX、Y:X * 10 + Y、マップ(ラムダI:num_dic [i]は、S)、9) プリント(RES2)
結果
912344
フィルタ
filter()
関数は、シーケンスをフィルタリングするために使用されます。filter()
そして、関数が返された値に基づいて、各要素に順次渡されるシーケンスを受信する機能をTrue
れるFalse
要素を維持するか破棄することを決定し、最終的に生成オブジェクトを返します
1.フィルタb_li配列は、整数ジェネレータの平方根を返します
インポート数学 F2 =フィルタ(ラムダX:math.sqrt(X)%1 == 0、リスト(範囲(100))) プリント(リスト(F2))
剰余を求める除算の平方根は、結果は
[0、1、4、9、16、25、36、49、64、81]
並べ替え
ソートは、2つの要素を比較しています。健康のデジタル直接比較、ASCII文字列の比較によると、利用可能な辞書項目()の比較、他の要素の値。重要なパラメータは、カスタムオーダーを実装することができ、すなわち、キーはソートされたマッピング機能を達成することです
1.数字、Falseにreversse昇順パラメータのデフォルト値の降順で達成しました。
order_li =ソートされた([36、5、-12、9、-21] =真逆) プリント(order_li)を
結果
[36、9、5、-12、-21]
2.昇順の番号は絶対達成するために
order_li =ソートされた([36、5、-12、9、-21]、キー=ラムダX:ABS(x))を 印刷(order_li)
結果
[5、9、-12、-21、36]
3.最初の文字を達成するために昇順、ケースを無視
order_li =ソート([ 'ボブ'、 '動物園'、 'クレジット']、キー=ラムダX:x.lower()) プリント(order_li)
すべて小文字に、アルファベット順によると、結果は
[ 'ボブ'、 'クレジット'、 '動物園']
4.辞書のソート。健康昇順によると、
DIC = {2:[30、 'Y']、1:96、 'I']、3:21、 'W']、9:40、 'Y']、7 [20、「Y 「]} 印刷(dic.items()) order_dic_li =ソート(dic.items()、キー=ラムダX:X [0]) order_dic = {I [0]:I [1] iに対するorder_dic_liにおける} 印刷( order_dic)
辞書項目()メソッドを取得し、オブジェクトがdict_itemsあります。ソートソートすなわちキン最初の要素dict_itemsオブジェクト、結果は
dict_items([(2-、[30、 'Y'])、(1、[96、 'I'])、(3、[21、 'W'])、(9、[40] 'Y') 、(7、[20、 'Y'])])
{1:96、 'I']、2:30、 'Y']、3:21、 'W']、7 [20、 'Y']、9:40、 'Y'] }
5.辞書のソート。要素の値が、第二の要素の優先順位の値、最初の要素に応じてソート、両方が昇順であります
order_dic_li =ソート(dic.items()、キー=ラムダX(X [1] [1]、X [1] [0])) order_dic = {I [0]:I [1] iに対するorder_dic_liにおける} 印刷(order_dic)
二つの要素の値ソートし、結果は
{1:96、 'I']、3:21、 'W']、7 [20、 'Y']、2:30、 'Y']、9:40、 'Y'] }
第二の要素の6値、辞書順序優先度の値に応じて要素の最初の要素、第二要素の昇順で、最初の要素DESC
order_dic_li =ソート(dic.items()、キー=ラムダX(X [1] [1]、[1] [0])-X) order_dic = {I [0]:I [1] order_dic_liでiについて} 印刷(order_dic)
結果
{1:96、 'I']、3:21、 'W']、9:40、 'Y']、2:30、 'Y']、7 [20、 'Y'] }