将函数序列应用于python中的对象

时间:2018-06-15 09:11:23

标签: python python-3.x class scope

基于string形式的一组指令,我必须一个接一个地对一个对象应用某些指令(fxns)。这是更大系统的一部分。我已经到了这一点。我需要一种迭代方法,并在指令末尾返回对象的条件。我遇到了this reference,但在那里,函数被应用于一个常量初始数据以获得输出列表。然而,在我的情况下,对象随着迭代而改变。因此while语句,但我还需要iterate来应用我的ith函数。

我也尝试创建一个递归函数(它在for语句中,它根本没有感觉正确),基本条件是指令长度达到0,(每个递归调用执行)一个指令,直到不再剩下,因此它的复杂性也在降低),它看起来像是一个很好的递归候选者,如果有人感兴趣,我将以这种方式感谢解决方案。

instruction_dict = {'D': lambda x : x/2 , 'M': lambda x: x%2, 'P':lambda x: x*2 , 'S': lambda x : x-2, 'A': lambda x : x+2}
instruction_set = 'PPPPPDDSAM'

def mycomputation (num):
    count, intermediate = 0, num
    fun_args = [instruction_dict[i] for i in instruction_set]

    while count <= len(fun_args):
        intermediate, count = fun_args(intermediate), count +1 #list is not callable, actually need fun_args[i](intermediate)
    return intermediate

fun_args是一个列表,列表不可调用,实际上需要类似 - fun_args[i](intermediate)

2 个答案:

答案 0 :(得分:0)

如果您有一个功能列表,则可以逐个应用它们:

for fun in fun_args:
    intermediate = fun(intermediate)

答案 1 :(得分:0)

解决方案非常简单:

def mycomputation(num):
    for instruction in instruction_set:
        num = instruction_dict[instruction](num)
    return num