【发布时间】:2010-10-26 04:20:45
【问题描述】:
全部,
我在下面有些困惑可能需要你的帮助
假设我有一个基于行的可变长度数据矩阵
93 77 96 85
50 69 54 16
39 91 59 38
64 30 18 50
43 9 74 94
44 87 95 89
...
我想用不同的生成算法和不同的范围选择算法通过上面的源生成结果数据,以下面的代码为例
lsrc = [# above data]
def rangesel_001(lsrc):
tmp = []
for i in len(lsrc):
if i % 2 = 0:
tmp.append(lsrc[i])
return tmp
def algo_001(lsrc):
tmp = []
for i in len(lsrc):
tmp.append([x+1 for x in lsrc[i]])
return tmp
所以我想要的数据是:
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”算法的不同部分在这里是sn-p:
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
那么我可以得到所有的“rangeset”函数和“algo”集合吗?
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
现在我想选择随机 3 来链接它们并调用以获取结果列表?
dscl = random_pick(3, combination_list, lsrc)
谢谢!
【问题讨论】:
标签: python function combinations