【Python】filter関数まとめ【基本講座】
Pythonには、filter()関数という別の関数に引数を渡しことができる関数があります。リストの要素をフィルタリングするときに用います。filter()関数はリストの要素に順に引数で指定した関数を実行し、結果がTrueとなる要素を戻します。
filter()関数をマスターしよう
filter()関数の基本書式
filter()関数の基本書式を例を使って見てみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
def hoge(a): return a > 3 l = [1,2,3,4,5] result = [] for a in filter(hoge, l): result.append(a * 100) print(result) >> [400, 500] |
hoge()関数の引数が3より大きければ、要素の値を100倍してリストに追加するプログラムです。map()関数とどう違うのかというと、filter()の部分をmap()に変えてみると分かります。
結果は、[0, 0, 0, 100, 100] と帰ってきます。どうやら関数でa > 3がTrueのときのみ、1(Trueのため)を返して、100倍してappend()しているようです。
つまり、filter()関数は、関数内で条件を満たすリスト内の要素を選別して、かつその要素をひとつずつ取り出し、処理して、空リストにappend()しているというわけです。
では、この例題は、lambda文に書き換えできます。できますか?
1 2 3 4 5 6 7 8 9 10 |
l = [1,2,3,4,5] result = [] for a in filter(lambda a:a > 3, l): result.append(a * 100) print(result) >> [400, 500] |
簡単ですか?では、内包表記に書き直してください。
1 2 3 4 5 6 7 |
l = [1,2,3,4,5] result = [a * 100 for a in l if a > 3] print(result) >> [400, 500] |
Pythonおすすめ書籍
最初の2冊は初心者向けです。Effectiv Pythonはこの2冊を終えてから読むとかなりわかりやすく感動できると思います。
|
|
|