基于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)
答案 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