LoginSignup
0
4

More than 1 year has passed since last update.

Python lambdaでの処理

Last updated at Posted at 2021-05-12

はじめに

Pythonのlambda式を自身がよく忘れてしまいがちなので, メモとして残しておきます.
他の方の参考にもなればと思います.
間違っている箇所もあると思いますので, コメントしていただけると幸いです.

Pythonはdef()で関数を定義しますが, lambda式で無名関数を定義することができます.
def() を用いた関数の場合、引数として直接他の関数に渡すことができず, 違う場所で定義してから値を渡す必要があるのに対して, lambda式は, あくまで「式」であるので, 関数の引数として直接渡すことができます!!!!

次の節から例を紹介していきます.

def文とlambda式の対応関係

def add(x, y=1):
    return x+y

print(add(1,2))
# 3

print(add(100))
# 101

上記のdef文を, lambda式に変換した場合

f = lambda x, y=1: x+y

print(f(1,2))
# 3

print(f(100))
# 101

しかしながら, 上記のようにlambda式を変数に代入している記法は, PEP8では非推奨となっているので
注意してください

lambda式でif文処理

for文で一つ一つ処理する際に, if文の条件分岐が入るケースでもlambda式を活用することができます!

number_list = [1,2,3,4,5]

odd_number = []
for i in number_list:
    if i % 2 == 0:
       print(f"{i}は偶数である")
    else:
       print(f"{i}は奇数である")
       odd_number.append(i)

print(odd_number)
# [1,3,5]

上記のfor文を, lambda式を使って書き直した場合

number_list = [1,2,3,4,5]
odd_number = filter(lambda i : i % 2 != 0, number_list)

print(list(odd_number))
# [1,3,5]

sorted関数

リストをソートする組み込み関数には引数keyがあります.
keyには, ソートの前にリストの各要素に適用される関数を指定します.

a = [[0,7,4], [2,5,6], [7,4,2]]
b = sorted(a)

print(b)
# [[0,7,4], [2,5,6], [7,4,2]]

上記のsorted関数で, lambda式を活用した場合

a = [[0,7,4], [2,5,6], [7,4,2]]
b = sorted(a, key=lambda x: x[-1]) 

print(b)
# [[7, 4, 2], [0, 7, 4], [2, 5, 6]]

map関数

リストの各要素に対して, 一定の処理を行った値を使用する場合はmap関数を適用します.

def doubler(x):
    return x*2

L = [1, 2, 3, 4, 5, 6]
mod_list = map(doubler, L)

print(list(mod_list))
# [2, 4, 6, 8, 10, 12]

上記のmap関数で, lambda式を活用した場合

L = [1, 2, 3, 4, 5, 6]
doubler = map(lambda x: x*2, L)
print(list(doubler))
# [2, 4, 6, 8, 10, 12]

まとめ

今回はlambdaでの処理について記事にしました.
間違っている部分があった場合はコメントしていただけると幸いです.
今後もpython tipsを記事にしていこうと思います:smile:

参考文献

0
4
1

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
0
4