Pythonのmap、reduce、filterを使ったリスト操作の方法

任意の関数をリストの各要素に適用する方法として、map()、reduce()、filter()を説明します。これらの関数は、リストの要素に対して関数を順に適用し、実行結果から新しいリストを生成して返します。なお、リストに関数を適用するとは、リストの要素を引数として関数を実行するということです。

リストの全要素に順番に関数を適用する:map()

map()は、リストの要素を1つずつ取り出し、任意の関数を順番に適用し、その返り値を要素とした新しいリストを返します。

map()の書式は次の通りです。map()は、第一引数に適用する関数を、第二引数に適用先のリスト名を指定します。これは、reduce()、filter()も同様です。

書式

次のサンプルプログラムでは、予め用意したリストの要素をそれぞれ1加算した結果を要素としたリストの内容を表示しています。

リストの要素数が1になるまで関数を適用する:reduce()

reduce()は、リストの先頭2つの要素を引数にした任意の関数をリストの先頭から順番に適用していくことを繰り返し、最終的に要素数が1のリストを返します。

次のサンプルは1から5の和を求めるプログラムです。

上記のプログラムは((((1+2)+3)+4)+5)を計算していることになります。

最初にリストの先頭の二つの要素(1、2)を引数としてadd関数を実行します。次に、返された値3と元のリストの3番目の要素3を引数としてadd関数を実行します。これをリストの終端まで累積的に繰り返すことで、最終的には要素は一つ(15)になります。

リストの全要素から条件に一致した要素のみを抽出する:filter()

filter()は、リストの全要素について任意の関数を順番に適用し、trueが返された要素のみからなる新しいリストを返します。

次のサンプルプログラムでは、リストの要素から奇数のみを抽出して新しいリストを生成しています。


Welcome to UX MILK

UX MILKはより良いサービスやプロダクトを作りたい人のためのメディアです。

このサイトについて