Python入門者です。
Python3で、reduceとlambdaを使えばリスト操作が簡潔になるな~と気づいたのでメモ。
reduceとは
リストの要素すべてを参考にして、最終的に1つの値を得る処理です。
例
以下の例では、1,2,3,4を参考にして、それぞれを足しあわせた結果を表示します。
gist6e7a46cff9654e7c9cef5b2d085b1e8d
reduceは第一引数に関数を取り、第二引数にreduceの対象を取ります。
関数には、2つの引数が渡されます。1つ目が試算結果で2つ目が単一の要素です。
つまり、上記の例では、add関数の第二引数が、2, 3, 4となります。
最初のループのみ、引数が1と2になります。最初だけ、第一引数は試算結果ではなくリストの先頭要素なんですね。
reduceには、range(1, 5)として[1, 2, 3, 4]を与えますが、ループ自体は3回だけ行われます。
ラムダとは
Pythonでのラムダとは無名関数を作成するものです。
先ほどの処理をラムダを使って書くと以下のようになります。
gistdae62cf7c809d722c2ff6e9c1a0c1d6a
lambdaでラムダを使うことを宣言。
スペースを空けて、無名関数の引数をセット。この場合は、resultとxの2つですね。
そして、コロンで区切って処理文を書きます。
いいですね。ラムダとコレクション系のメソッドの組み合わせ。
Python学習の早い段階で身につけられて良かったです。