【python学習ノート】Python関数式プログラミング


説明
関数式プログラミングは一連の関数を使って問題を解決し、一般的なプログラミング思考に従って、問題に直面する時私たちの思考方式は“どのようにします”で、関数式プログラミングの思考方式は私が“何をします”です.Pythonにはlambda,map,reduce,filterなどの内蔵メソッドがあります.
匿名関数(lambda)
構文
lambda args: expression
パラメータ(args)の構文は通常の関数と同様であり、式(expression)の値は匿名関数呼び出しの戻り値である.lambda式はこの匿名関数を返します.
元のメソッド
L1 = [1,-9,6,6,7]
L2 = []
for i in range(len(L1)): #    for  
    if L1[i] > 0:
        lst2.append(L2[i])

匿名関数を使用した関数メソッド
L2 = filter(lambda n: n > 0, L1)

map関数
map関数は毎回1つのデータのみを処理します
Mapは1つのメソッドと1つの集合をパラメータとして受け入れる.新しい空のセットを作成し、各セットの要素をパラメータとしてこの入力メソッドを呼び出し、戻り値を新しく作成したセットに挿入します.最後にその新しい集合に戻ります.
def to_lower(item):
    return item.lower()

# name = map(lambda n: n.lower(),['LeaSon','Baidu','Qq'])
name = map(to_lower,['LeaSon','Baidu','Qq'])
print name

>>> ['leason', 'baidu', 'qq']

Reduce関数
Reduce関数は毎回2つのデータを処理する必要があり,Reduceは1つの方法と1つの集合をパラメータとして受け入れる.この方法でコンテナ内のすべての要素を反復した結果を返します.
最初の反復はこれまで反復結果が伝わってこなかった.reduce()は、セット内の最初の要素を最初の反復として使用します.
def add(a,b):
    return a+b

# result = reduce(lambda a,b:a+b,[1,2,3])
result = reduce(add,[1,2,3])
print result

>>> 6

関数プログラミングの特徴:
1)コードが簡単になりました.
2)データセット,操作,戻り値が一緒に置かれている.
3)コードを読むときに循環体がなくなると,一時変数が少なくなり,変数が逆さまに論理的になる.
4)あなたのコードは、どのようにするかではなく、何をするかを説明するようになりました.
leason|個人ブログ