Python(ラムダ式)

import functools as ft

(lambda a,b:a if a<b else b)

(lambda a,b:a if a<b else b)(3,5)
(lambda a,b:a if a<b else b)(5,3)

ft.reduce(lambda a,b:a if a<b else b,[1,10,2,-9,5,9])
ft.reduce(lambda a,b:a if a>b else b,[1,10,2,-9,5,9])

ft.reduce(lambda a,b:a and b,[True,True,True])
ft.reduce(lambda a,b:a and b,[True,True,False,True])
ft.reduce(lambda a,b:a or b,[True,True,False,True])
ft.reduce(lambda a,b:a or b,[False,False])

関数定義を作成しなくても、ちょっとした処理であれば、直接式を記述して実行したい!記述を短くしたい!
そんな時に役立つのがラムダ式と呼ばれる記述方法。
Pythonではlambda宣言することで活用できます。

ここでimportしているfunctoolsというライブラリはたたみ込み関数で処理を行います。高階関数として非常に強力なのですが、たとえば組み込み関数であるAllを使った場合、Falseを見つけた段階でreturnされ、無駄に中身すべてを処理する必要がなくなるのですが、ft.reduce()を用いた場合は中身がすべて実行されてしまうので、処理が重くなるという注意点もあります。

色々な関数の仕様を把握した上で効率的に活用できるようになりたいですね。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

Python

前の記事

Python(バブルソート)