はじめに
最近はPythonが書けるようになってきて、ある程度作りたいものをPythonで実現できるようになったので、Python初心者からの脱却を目指して、今までプログラム書くときに使ってこなかった機能を使えるようにしていきたいと思います。
今回はlambdaの使い方を学びたいと思います。
lambdaとは
無名関数を作るもの
使ってみる
lambda 引数1, 引数2: 返り値
といった感じで書くが、実際に利用するときには、後ろに引数に代入する値を書く必要がある。
(lambda 引数1, 引数2: 返り値)(値1, 値2)
引数1には値1が、引数2には値2が代入される。
今回は、簡単な計算をする処理を書いてみる。
def add(a, b):
return a+b
(lambda a, b: a+b)(2, 5)
どちらの書き方でも結果は同じになる。
変数にlambdaを渡す
add = lambda a, b: a+b
add(2, 5)
先ほどの利用方法では無名関数と呼ばれるものを作りましたが、
変数に代入することで、普通の関数のように使うことができます。
lambdaの利用
構想関数 ・・・ 引数に関数を用いる関数
lambdaは構想関数と組み合わせて使われる。
これから書く処理
文字列のリストから文字コードのリストを作成する
fruits = ['apple', 'grape', 'orange']
[6170706c65, 6772617065, 6f72616e6765]
codes = []
for fruit in fruits:
codes.append(fruit.encode('utf-8').hex())
codes = list(map(lambda fruit: fruit.encode('utf-8').hex(), fruits))
map関数 ・・・ リストの全要素に対して同じ処理を行う
map(関数, リスト)
1.map関数によってfruit(lambda式)にfruitsの中の要素が1つ渡される
2.fruitをutf-8にエンコードする
3.エンコードしたものを16進数の文字コードに変換する
4.map関数から得た結果をリストに変換する
ざっくりですが、こんな処理を1行で書けます。
まとめ
lambdaを使うことですっきり書くことができるので、今後も使いたいものだとは思いましたが、コードの可読性が下がる可能性があるので、気を付けて使いたいと思います。