ホームページ  >  記事  >  バックエンド開発  >  Pythont の特別な構文のフィルター、マップ、リデュース、および適用の使用方法の概要

Pythont の特別な構文のフィルター、マップ、リデュース、および適用の使用方法の概要

高洛峰
高洛峰オリジナル
2017-03-07 16:26:391521ブラウズ

(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,&#39;Hello World!&#39;))

Pythont の特別な構文フィルター、マップ、リデュース、適用方法の詳細については、次の点に注意してください。関連記事については、PHP 中国語 Web サイトをご覧ください。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。