LoginSignup
5
2

More than 1 year has passed since last update.

はじめに

 最近はPythonが書けるようになってきて、ある程度作りたいものをPythonで実現できるようになったので、Python初心者からの脱却を目指して、今までプログラム書くときに使ってこなかった機能を使えるようにしていきたいと思います。
 今回はlambdaの使い方を学びたいと思います。

lambdaとは

 無名関数を作るもの

使ってみる

lambdaの書式
lambda 引数1, 引数2: 返り値

といった感じで書くが、実際に利用するときには、後ろに引数に代入する値を書く必要がある。

(lambda 引数1, 引数2: 返り値)(値1, 値2)

引数1には値1が、引数2には値2が代入される。

今回は、簡単な計算をする処理を書いてみる。

通常の関数
def add(a, b):
  return a+b
lambdaを使用
(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]
for文を利用
codes = []
for fruit in fruits:
  codes.append(fruit.encode('utf-8').hex())
lambdaを利用
codes = list(map(lambda fruit: fruit.encode('utf-8').hex(), fruits))

map関数 ・・・ リストの全要素に対して同じ処理を行う

map関数の書式
map(関数, リスト)

1.map関数によってfruit(lambda式)にfruitsの中の要素が1つ渡される
2.fruitをutf-8にエンコードする
3.エンコードしたものを16進数の文字コードに変換する
4.map関数から得た結果をリストに変換する

ざっくりですが、こんな処理を1行で書けます。

まとめ

lambdaを使うことですっきり書くことができるので、今後も使いたいものだとは思いましたが、コードの可読性が下がる可能性があるので、気を付けて使いたいと思います。

参考 : https://www.youtube.com/watch?v=dF492ntFcKU

5
2
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2