Pythonの便利な関数:map関数

python-image Python
スポンサーリンク

こんにちは。カルークです。

今回は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関数を使って、リストの各要素に対して、独自の処理を施す方法について書きました。また、ラムダ式を用いることで、よりシンプルに記述する例も書きました。この辺りを使いこなすと、コードが見やすくなって良さそうです。

タイトルとURLをコピーしました