手元の技術メモをインターネットに出す記事です。 今回は、Pythonのリストから特定条件で抽出する話。
例えば、 .flg という属性がTrueのものだけ取り出す場合
filter(lambda obj: obj.flg, mylist)
結果は、イテレータである。
対話型プロンプトで動かしてみるとこんな感じ。
>>> from dataclasses import dataclass >>> >>> @dataclass ... class MyClass: ... name: str ... flg: bool ... >>> mylist = [ ... MyClass(name="mtb", flg=True), ... MyClass(name="matoba", flg=False), ... MyClass(name="mtb_beta", flg=True), ... ] >>> mylist [MyClass(name='mtb', flg=True), MyClass(name='matoba', flg=False), MyClass(name='mtb_beta', flg=True)] >>> filter(lambda obj: obj.flg, mylist) <filter object at 0x1003f3c70> >>> list(filter(lambda obj: obj.flg, mylist)) [MyClass(name='mtb', flg=True), MyClass(name='mtb_beta', flg=True)]