Python : filter()はイテラブルの要素を絞り込む

TwitterFacebookHatena
  • 公開:2021-9-7
  • 更新:2023-10-26
  • 文章量:974
  • Python

TL;DR

filter()は、イテラブルの要素を絞り込む。第一引数に関数、第二引数にイテラブルを指定する。イテラブル要素を順に関数に渡し判定する。関数は無名関数でもよい。

filter() のポイント

  • 関数が True を返す要素のリストを返す
  • イテラブルの中から指定条件に合致した要素を抽出する
  • リストに変換可能
filter(function, iterable)

iterable はシーケンスか、反復をサポートするコンテナか、イテレータとなる。

filter() - 組み込み関数 — Python 3.9.4 ドキュメント

filter()だけではオブジェクトが返されるだけで数値は表示されないので、値を表示するときは、for か list を使う。

filter(関数, イテラブル)

# リストで出力
list(filter())

# 数値を出力
for hoge in filter(関数, x):
    print(hoge)

関数を使って奇数を出力

関数を使うと以下のようになる。

def a(n):
    return (n%2) == 1

b = [1, 2, 3, 4, 5, 6]
list(filter(a, b))

# [1, 3, 5]

lambda(ラムダ式)を使ってリストで出力する

3 より大きい数値をリストで出力してみよう。

x = (1, 2, 3, 4, 5)
list(filter(lambda i: i > 2, x))
[3, 4, 5]

lambda(ラムダ式)を使って偶数を出力する

for 文を使って、偶数を出力してみよう。

# 偶数を抽出する

x = [1, 2, 3, 4, 5, 6]

for hoge in filter(lambda i: i % 2 == 0, x):
    print(hoge)

# 2
# 4
# 6

None

function が None なら iterable の偽である要素がすべて除去される。第一引数に None を渡すと真理値評価の結果で絞り込まれる。

a = [None, [], {}, 0, '', False, 1, 'A']
list(filter(None, a))

# [1, 'A']

Python : filter()はイテラブルの要素を絞り込む