こんにちは。カルークです。
今回はpythonの便利な関数であるmap関数について、自分の備忘録として使い方を書きます。
map関数の使い方例
map関数は、配列の中の要素それぞれに対して、特定の処理(自分で定義します)を施すことが出来ます。
例えば、下記のようなリストがあったとします。
str_list = ['AAA', 'Bbb', 'ccC']
各要素の中には大文字、小文字が入り混じったアルファベットが記述されています。
map関数を使って、これらを全て大文字に統一してみましょう。
まずは、上記で書いた「特定の処理」を関数として定義します。ここでは、引数で渡された文字列を大文字にする処理を記述します。
def upper_str(str_):
return str_.upper()
それでは、map関数を使って、要素の各々の文字列を大文字に変換してみます。
list(map(upper_str, str_list))
これだけです。実行結果は以下のようになっていて、ちゃんと大文字に変換されているのがわかります。
ざっくり解説ですが、map(<処理が書かれた関数>, 配列)を実行することで、「配列」の各要素が「処理が書かれた関数」に順番に渡されて処理がされ、mapオブジェクトとして保持されます。そして、元のリスト形式に戻すためにlist()の引数にそのmapオブジェクトを渡しています。
lambda式(無名関数)を使うともっと短く記述できる
先程は、map関数を呼び出す前に独自関数を定義していました。下記の部分です。(再掲)
def upper_str(str_):
return str_.upper()
実は、これくらい短くて単純な処理であれば、ラムダ式を使った方がシンプルに記述することができます。
結論から書いてしまうと、下記の1行です。
list(map(lambda word:word.upper(), str_list))
結果を見ると、ちゃんと各要素の文字列が大文字になっているのが分かります。
まとめ
今回は、map関数を使って、リストの各要素に対して、独自の処理を施す方法について書きました。また、ラムダ式を用いることで、よりシンプルに記述する例も書きました。この辺りを使いこなすと、コードが見やすくなって良さそうです。