高階関数とコンセプトマップ/フィルター/減らします

どのような機能の高階関数と呼ばれる:地図(FUNC、*イテラブル) - >マップオブジェクト
  条件:1.関数は、パラメータとしての機能を受け入れ
     含まれる機能2.関数の戻り値を
= num_l [1,2,3,4,5,6] 
B =マップ(ラムダX:X ** 2、num_l)
プリント(B)
IにおけるB用:
  印刷(I)
>>> 0x0000023023782358 AT <地図オブジェクト>#マップオブジェクトがイテレータである返す
  。1
  。4
  。9
  16
  25
  36
= num_l [1,2,3,4,5,6] 
DEFのadd_one(X):#ラムダもXラムダと同等、引数として機能することができる:+ 1 X
。復帰1 X +
DEFのreduce_one(X):
リターン1-X
DEF map_number(FUNC、アレイ):パラメータ#カプセル化、処理の関数として伝達関数
RET = []
:num_lにおけるIため
RES = FUNC(I)または#add_one reduce_one
ret.append(RES)
リターンRETの

印刷(map_number(add_one、num_l))#1 map_number((ラムダX:X + 1)、num_l)

>>> [2 ,. 3 ,. 4 ,. 5 ,. 6 ,. 7]

上記のコードは、実際に()関数をマップであります!誤って組み込み関数のマップを完成!:等価マップ(図示X + 1)、num_l(ラムダX)

の次関数-filter フィルタ(関数またはNone、反復可能) - >フィルタオブジェクトの
  
例:
all_starts = [ '神戸'、 'キロ'、 'AI'、 'Jorden'、 'jamse'、 'sb_zhouqi'、 'sb_guoailun'] 
:DEF filter_test(アレイ)
RET = []
配列内のIのため:
IFないI. startsWith( 'SB'):
ret.append(I)
を返すRET
RES = filter_test(all_starts)
印刷(RES)
>>> [ '神戸'、 'キロ'、 'AI'、 'Jorden'、 'jamse']
上記例は、見ロジックまたはforループによって実現、そのプロセスはSBでスタートを行う方法ではない場合することができますか?XXは行う方法の途中で処理されて?
独立した関数として記述することができますので、このロジックでは、それは非常に良い使用されます、上記のマップ機能として、あなたが私に処理する機能と処理ロジックの繰り返しオブジェクトを与え、私はあなたに対処しましょう!
唯一の違いは、この場合にはTrueまたはFalseを介して濾過した論理BOOL、決定することであるということである機能の論理素子を除くフィルタ機能が登場しました!フィルタは保持され
、機能のロジック・エレメントを満たすために!
all_starts = [ '神戸'、 'キロ'、 'AI'、 'jorden'、 'jamse'、 'sb_zhouqi_sb'、 'sb_guoailun_sb'] 
DEF sb_show(N):
戻りn.endswith( 'SB')
DEF filter_test(FUNC 、アレイ):
RET = []
iについて、アレイ内の:
いない場合FUNC(I):
ret.append(I)
リターンRET

RES = filter_test(sb_show、all_starts)
プリント(RES)
誤ってアウトに構築機能をフィルタリングします!これは、アレイ内の各要素は、関数の前面に出てオブジェクト、および結果が真で保持することである反復することを意味する
偽の処理の結果は破棄されます。

アルティメットバージョン:RET =フィルタ(ラムダX:未x.startswith( 'SB')、アレイ)
     を印刷(一覧(RET))
   >>> [ '神戸'、 'キロ'、 'AI'、 'Jorden'、 ' jamse「]

---の高階関数は、削減
削減functoolsインポートから










おすすめ

転載: www.cnblogs.com/qyan-blog/p/11716958.html