望月の息抜き

在宅勤務の息抜きです。主にプログラミングについて書いていきたいと思います。

【Python】【9】filter関数を使ってみよう

【記事の目標】

filter関数を使ってみる

 

【作業手順】

1.filter関数ってどんな時に使うの?

2.filter関数の使い方

3.filter関数を実際に使ってみよう

 

1.filter関数ってどんな時に使うの?

リストの中で条件に当てはまるものだけ取り出したいときに利用します。

 

2.filter関数の使い方

filter関数は

 filter(関数, リスト)

の形で書くことが出来ます。

filter関数の戻り値はfilterオブジェクトになるため、リストとして使う場合は以下のように書きましょう。

 list(filter(関数, リスト))

 

3.filter関数を実際に使ってみよう

今回は特にインポートは必要ありません。

では、要素の中で2で割った余りが0のものだけ取り出す処理を書いてみましょう。

まず、数字の入った配列を定義します。

 args = [1, 2, 3]

次に2で割って0余るかどうかを判定する関数を作成します。

 def isEven(num):
return num % 2 == 0

では、最後にfilter関数を使って、定義した配列の要素から2で割った余りが0のものを取り出す処理を書きましょう。

 result = list(filter(isEven, args))
print(result)

それでは実行してみましょう。

f:id:fysker:20220109221513p:plain

2で割った余りが0のものだけ取り出されていますね。

 

【補足】

・list()を付けなかったらどうなるの?

「2.」でも補足していますが、filterオブジェクトのまま出力されてしまします

以下のようになるので、注意です。

f:id:fysker:20220109221805p:plain

 

・無名関数(ラムダ式)を使うともっとシンプルに

簡単な比較処理であれば、無名関数を使うともっとシンプルになります。

記載方法は以下のようになります。

 result = list(filter(lambda n: n % 2 == 0, args))

「3.」で作成した isEvenの関数を書く必要はありません。

この記載だけですべての要素から2で割った余りが0のものを取り出すことができます。

 

 

今回も、関数を使ってみました。

簡単だったと思いますが、【8】のmap関数と組み合わせると便利そうですね。

様々な関数を知っておくことで、実際にコードを書こうとするときに、どうやって実現するかの選択肢になりますね。