2020年4月12日日曜日

【組み込み関数】filterによる特定要素の取り出し

 リストやタプルといったイテラブルオブジェクトの要素から条件に合う要素のみを取り出す組み込み関数filterの使い方について説明する。



1. filter関数を使ったイテラブルオブジェクトからの特定要素の取り出し

 filterは下のようにfunctionitertableを引数に取り、「itertableの内functionがtrueの要素を取り出す」機能がある。function部分はユーザー定義関数defもしくは無名関数lamdaを用いて記述する。

filter(function, iterable)


function部分を無名関数lamdaを用いて記述した場合。無名関数lamdaで偶数をtrueとしタプルaの内偶数のみを取り出す。filterはイテレータを生成するのみなのでtupleによりイテレータ→イテラブルオブジェクト(タプル)に変換している。

a = (1, 2, 3, 4, 5, 6)
b = tuple(filter(lambda x: x % 2 == 0, a))
print(b)

実行結果

(2, 4, 6)


function部分をユーザー定義関数defを用いて記述した場合。関数evenを定義し、filter内で呼び出している。上と同じ処理だが無名関数の方が簡潔に書ける。

def even(number):
    if number % 2 == 0:
        return True
    else:
        return False
    
a = (1, 2, 3, 4, 5, 6)
b = tuple(filter(even, a)
print(b)

実行結果

(2, 4, 6)


無名関数lamdaを使って文字列のリストから7文字未満の要素のみ取り出して新しいリストにする例

a = ['Japan', 'Unaited States', 'China', 'Australia']
b = list(filter(lambda x: len(x) < 7, a))
print(b)

実行結果

['Japan', 'China']


2. リファレンス

Python 標準ライブラリ > 組み込み関数 > filter(function, iterable)

使用バージョン:Python 3.7.0

0 件のコメント:

コメントを投稿