python高階関数マッピング&フィルター&減らす&ソート

関数のパラメータとしての機能への高階関数

 

参考リンク

  高次機能

 

環境

  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'] }

 

おすすめ

転載: www.cnblogs.com/yuanxuetao/p/11357567.html