(1)lambda
lambda は Python の非常に便利な構文で、単一行の最小限の関数をすばやく定義できます。 C 言語のマクロと同様に、関数が必要なときにどこでも使用できます。
基本的な構文は次のとおりです:
関数名 = lambda args1,args2,...,argsn : 式
例:
add = lambda x,y : x + y print add(1,2)
(2) filter
フィルター関数これは、関数がシーケンス sequence 内の各要素に対して順番に実行されることを意味します。 function は bool 関数です。例:
sequence = [1,2,3,4,5,6,7,8,9,10] fun = lambda x : x % 2 == 0 seq = filter(fun,sequence) print seq
次のコードは、 内のシーケンスからすべての偶数をフィルターで除外することを意味します。
フィルター関数のプロトタイプはおおよそ次のとおりです:
def filter(fun,seq): filter_seq = [] for item in seq: if fun(item): filter_seq.append(item) return filter_seq
(3)map
mapの基本形式は次のとおりです:map(function, sequence)。これは、関数関数をsequence シーケンスを実行し、最終結果シーケンスを返します。例:
seq = [1,2,3,4,5,6] fun = lambda x : x << 2 print map(fun,seq)
map の関数のソース コードはおおよそ次のとおりです:
def map(fun,seq): mapped_seq = [] for item in seq: mapped_seq.append(fun(item)) return mapped_seq
(4)reduce
reduce 関数の形式は次のとおりです:reduce(function, sequence, initVal) )、関数は二項関数を意味し、sequenceは処理対象のシーケンスを表し、initValは処理対象の初期値を表します。例:
seq = [1,2,3,4,5,6,7,8,9,10] fun = lambda x,y: x + y print reduce(fun,seq,0)
は、初期値0から始まるシーケンスseqの各要素を累積することを意味するため、結果は55になります
reduce関数のソースコードはおおよそ次のとおりです:
def reduce(fun,seq,initVal = None): Lseq = list(seq) if initVal is None: res = Lseq.pop(0) else: res = initVal for item in Lseq: res = fun(seq,item) return res
(5) apply
apply は、次のような特定の関数を間接的に置き換えるのに使用されます:
def say(a,b): print a,b apply(say,(234,'Hello World!'))
Pythont の特別な構文フィルター、マップ、リデュース、適用方法の詳細については、次の点に注意してください。関連記事については、PHP 中国語 Web サイトをご覧ください。