読者です 読者をやめる 読者になる 読者になる

コンパイラかく語りき

文系新卒プログラマーのメモ

【Python3】reduce関数とラムダで、簡潔リスト操作

Python入門者です。
Python3で、reduceとlambdaを使えばリスト操作が簡潔になるな~と気づいたのでメモ。

 

reduceとは

リストの要素すべてを参考にして、最終的に1つの値を得る処理です。

qiita.com

 

以下の例では、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学習の早い段階で身につけられて良かったです。