はじめに
このチャレンジでは、与えられたフィルタ関数の結果に基づいてリストを 2 つのグループに分割する Python 関数を書きます。これは、特に大規模なデータセットを扱う際に、プログラミングにおける一般的なタスクです。
関数に基づくリストの分割
bifurcate_by(lst, fn) という関数を書きます。この関数は、リスト lst とフィルタ関数 fn を引数とします。この関数は、フィルタ関数の結果に基づいてリストを 2 つのグループに分割する必要があります。フィルタ関数が要素に対して真値を返す場合、その要素は最初のグループに追加されます。それ以外の場合、その要素は 2 番目のグループに追加されます。
関数は、2 つのリストのリストを返す必要があります。最初のリストには、フィルタ関数が真値を返したすべての要素が含まれ、2 番目のリストには、フィルタ関数が偽値を返したすべての要素が含まれます。
各要素に対する fn が返す値に基づいて、要素をグループに追加するためにリスト内包表記を使用します。
def bifurcate_by(lst, fn):
return [
[x for x in lst if fn(x)],
[x for x in lst if not fn(x)]
]
bifurcate_by(['beep', 'boop', 'foo', 'bar'], lambda x: x[0] == 'b')
## [ ['beep', 'boop', 'bar'], ['foo'] ]
まとめ
このチャレンジでは、与えられたフィルタ関数の結果に基づいてリストを 2 つのグループに分割する方法を学びました。各要素に対するフィルタ関数が返す値に基づいて、要素をグループに追加するためにリスト内包表記を使用しました。これは、特に大規模なデータセットを扱う際に、プログラミングにおいて役立つ技術です。