【Python】関数について(関数の使い方、ラムダ関数)

(※以下は2018年1月7日時点の情報です。)

このページでは『Pythonの関数』について解説します。

関数の定義

関数とは特定の処理を汎用的に使いまわせる仕組みです。

与えられた引数から最大値を返すmax関数や、最小値を返すmin関数などはデフォルトで用意された関数でした。
このような特定の処理をする関数を自分でも作ることができます。

関数のフォーマットは以下の通りです。
関数であることを定義するためにdef(defineの略)から始め、その後に関数名を記載します。

関数のフォーマット
def 関数名(引数1, 引数2, … , 引数m) :
    処理1
    処理2

    処理n
    return 戻り値

関数の例を以下に示します。
2つの引数を取り、加算した結果を戻り値として返す関数です。

関数の例(加算)
def add(a, b) :
	return a + b

add(5, 3)
8

引数のデフォルト値指定

関数は引数のデフォルト値を設定することができます。

指定方法の例を以下に示します。
引数ありで実行するとその名前に挨拶しますが、引数なしで実行するとデフォルトの名前(Kota)に挨拶することが分かります。

引数にデフォルト値を持たせた例
def hello(name="Kota") :
	return "Hi, {0}!".format(name)

hello("Mike")
'Hi, Mike!'
hello()
'Hi, Kota!'

ラムダ関数

ラムダ関数を使うと関数の定義をせずとも同じ処理を繰り返し行うことができます。
関数の定義をしないので使い捨てのイメージです。

ラムダ関数のフォーマットを以下に示します。

ラムダ関数のフォーマット
lambda 引数 : 処理

次にラムダ関数の実行例を示します。
先ほどの挨拶の関数をラムダ関数で実現しました。

lambda関数の実行例
hello = lambda name : "Hi, {0}!".format(name)
hello("Kota")
'Hi, Kota!'
hello("Mike")
'Hi, Mike!'

ただ上記のような使い方はラムダ関数にとって一般的ではありません。
より有効な活用方法を以下で見ていきましょう。

map関数

map関数使うとリストやタプルの要素全てに処理を行うことができます。

map関数のフォーマットを以下に示します。

map関数のフォーマット
map(処理を行う関数, リスト・タプル)

次にラムダ関数を用いたmap関数の実行例を示します。
リストのすべての要素が2倍になったリストが生成されていることが確認できますね。

ラムダ関数を用いたmap関数の実行例
nums = [1,2,3,4,5]
list(map(lambda x : x * 2, nums))
[2, 4, 6, 8, 10]

filter関数

filter関数を使うと条件に合致した要素だけを抽出することができます。

filter関数のフォーマットを以下に示します。

filter関数のフォーマット
filter(処理を行う関数, リスト・タプル)

次にラムダ関数を用いたfilter関数の実行例を示します。
引数で渡したリストから3の倍数のみを抽出したリストが表示されていることが分かりますね。

ラムダ関数を用いたfilter関数の実行例
nums = [1,2,3,4,5,6,7,8,9]
list(filter(lambda x : x % 3 == 0, nums))
[3, 6, 9]