Closed1

クレンジングを関数型で列挙するための関数群メモ

shin_t_o_shin_t_o_
from functools import reduce

# 対Series配列 論理演算用関数
def or_filter(*funcs):
    return reduce(lambda f, g: lambda x: f(x) | g(x), funcs)

def and_filter(*funcs):
    return reduce(lambda f, g: lambda x: f(x) & g(x), funcs)

# 対Series配列 パイプ処理用関数
def composite(*funcs):
    return reduce(lambda f, g: lambda *x: g(f(*x)), funcs)

Seriesを受け取り各要素に対してTrue/Falseを判定する関数群 *funcs(=func_01(series), func_02(series), ...) に対して

or_filter(
    func_01,
    func_02,
    ...
)(series)

and_filter(
    func_01,
    func_02,
    ...
)(series)

と連鎖的に処理を記述することが可能。

またSeriesを受け取りSeriesを返却する関数群 *funcs(=func_a(series), func_b(series)) に対して

composite(
    func_a,
    func_b,
    ...
)(series)

と記述することが可能。

このスクラップは2023/10/18にクローズされました