python,通过名称组合函数并将它们链起来调用inago?

2024-06-26 10:58:25 发布

您现在位置:Python中文网/ 问答频道 /正文

所有人

我有困惑下面可能需要你的帮助

假设我有一个基于行的可变长度数据矩阵

93  77  96  85
50  69  54  16
39  91  59  38
64  30  18  50
43  9   74  94
44  87  95  89
... 

我想用不同的生成算法和不同的范围选择算法通过上面的源生成结果数据,以下面的代码为例

^{pr2}$

所以我想要的数据是:

dscl = algo_001(rangesel_001(lsrc))

下面是我的问题:

1。假设我有一个可扩展的“rangesel”集,并且“algo”也是可扩展的,如下所示

rangesel_001()     algo_001()
rangesel_002()     algo_002()
rangesel_003()     algo_003()
…                    ...

我想混合它们,然后一次调用它们来得到我想要的所有结果

rangesel_001 + algo_001
rangesel_001 + algo_002
rangesel_001 + algo_003

rangesel_002 + algo_001
rangesel_002 + algo_002
rangesel_002 + algo_003
...

有没有一种方法可以方便地管理这些函数名,然后将它们组合起来执行?在

2.您可能会注意到“rangesel”和“algo”算法中的不同部分如下:

if i % 2 = 0:
 and
[x+1 for x in lsrc[i]]

如果有一种方法可以从函数定义中精确地找出这些公共部分,我可以给出一个列表:

if i % 2 = 0   rangesel_001
if i % 3 = 0   rangesel_002
if i % 4 = 0   rangesel_003
 and
[x+1 for x in lsrc[i]] algo_001
[x/2 for x in lsrc[i]] algo_002

那么我可以得到所有的“范围集”函数和“算法集”?在

3.也许以后我需要这个:

dscl = algo_001(rangesel_001(                             \
                             algo_002(rangesel_002(lsrc)) \  
                            ))

那么,有没有一种方法可以让我把“rangesel_002+algo_001”的组合链起来呢? 例如:假设我已经有了完整的组合

rangesel_001 + algo_001
rangesel_001 + algo_002
rangesel_001 + algo_003

rangesel_002 + algo_001
rangesel_002 + algo_002
rangesel_002 + algo_003

现在我想选择random 3来链接它们并调用它来获取结果列表?在

dscl = random_pick(3, combination_list, lsrc)

谢谢!在


Tags: and数据方法函数in算法列表for
1条回答
网友
1楼 · 发布于 2024-06-26 10:58:25

对于第一个问题,可以定义如下函数组合操作:

def compose(f, g):
    return lambda *x: f(g(*x))

然后,您可以:

^{pr2}$

如果您列出这样的函数:

rangesets = [rangeset_001, rangeset_002, rangeset_003]

然后可以迭代:

for r in rangesets:
    ra = compose(r, algo_001)
    ra(lsrc)

将此思想扩展到algo_xxx函数也是可能的。在

相关问题 更多 >