Python で 配列の 検索や 絞り込みを行う場合の Filter
x1 = [i for i in range(0,10)]
上記の 変数 x1 には 0〜9 までの数値が入った配列です。
filter を使って 偶数だけを取り出すと 下記のような 記述になります。
x2 = [fx for fx in filter(lambda x: x % 2 == 0, [i for i in range(0,10)])]
filter 関数内の lambda で 「 x % 2 == 0 」なら x に 結果を出すようにしています
例えば lambda x: x == 0 に変えれば x2 の配列は [0] 1つだけが入ります。
この filter() は class filter(Iterator[_T]) クラス型です。
従って for fx in filter() として iter 処理していかないと 配列に 戻らない仕組みです。
クラス配列 を フィルター
単純な配列ではなく クラス配列でもFilterは使えます。
class TAVActress: name = "" kana = "" def __init__(self, n, k): self.name = n self.kana = k x3 = [] x3.append(TAVActress("水奈瀬りな","みずなせりな")) x3.append(TAVActress("市川りく","いちかわりく")) x3.append(TAVActress("樟葉杏","くずはあん")) x4 = [fx for fx in filter(lambda x: "り" in x.name , x3)]
配列 x4 には name に「り」が ある モノのみを 絞り込んでいます。