Python 如何使用稍后传入的数据调用函数

Python 如何使用稍后传入的数据调用函数,python,Python,我正在做一个学校项目,我为一些数据计算不同的预测值,我用一些预测值创建了一个函数,这样我可以在for循环中使用它们 predictor_day = ( [(f"Median {x}", create_median_predictor(x)) for x in (10, 30, 60, 80, 120)] + [(f"Average {x}", create_average_predictor(x)) for x in (10

我正在做一个学校项目,我为一些数据计算不同的预测值,我用一些预测值创建了一个函数,这样我可以在for循环中使用它们

predictor_day = (
        [(f"Median {x}", create_median_predictor(x)) for x in (10, 30, 60, 80, 120)]
        + [(f"Average {x}", create_average_predictor(x)) for x in (10, 30, 60, 80, 120)]
        + [
            (f"Weighted average {x}", create_weighted_average_predictor(x))
            for x in (10, 30, 60, 80, 120)
        ]
    )
这是其中一个预测函数的外观:

def create_median_predictor(window_size):
    def median_predictor(train_data):
        return median(train_data[-window_size:])

    return median_predictor
def all_data_median_predictor(train_data):
    return median(train_data)
现在我还想创建一个预测器,它获取所有数据并返回其中值,它看起来是这样的:

def create_median_predictor(window_size):
    def median_predictor(train_data):
        return median(train_data[-window_size:])

    return median_predictor
def all_data_median_predictor(train_data):
    return median(train_data)
这就是我所说的:

for predictor in predictor_day:
       prediction = predictor(train_data)

但是我似乎想不出一种方法如何将它添加到我的predictors\u day变量中,因为它总是缺少参数train\u数据,有什么方法可以将它添加到这个变量中吗?

基于其他列表,我假设
predictor\u day
的类型是
列表[Tuple[str,Callable]

predictor\u day=(
[(f“中位数{x}”,为x in(10,30,60,80,120)创建中位数{x}预测值(x)]
+[(f“Average{x}”,为x in(10,30,60,80,120)创建_Average_预测器(x))]
+ [
(f“加权平均{x}”,创建加权平均预测值(x))
对于x英寸(10,30,60,80,120)
]
+[(“所有数据中值预测器”,所有数据中值预测器)]变化在这一行
)

您希望for循环做什么?在循环中更改
预测
将不会对
预测日
产生任何影响,以防万一,这正是您试图观察到的。我将稍后在循环中保存预测并比较平均绝对误差,我只是没有粘贴整个for循环,以便于阅读,我唯一的问题是正确地将
all_data\u median\u predictor
添加到我的predictor变量中,这比我想象的要简单得多。我用空括号尝试了这个,所以这一定是我出错的地方,非常感谢!