Pythonの関数リストは、実行チェーン?
-
26-09-2019 - |
質問
はPythonで私は、関数を定義します:
def foo_1(p): return p + 1
def foo_2(p): return p + 1
def foo_3(p): return p + 1
def foo_4(p): return p + 1
def foo_5(p): return p + 1
:チェーンがこれを好きなこととして、私はそれらの機能を実行する必要が
foo_1(foo_2(foo_3(foo_4(foo_5(1)))))
私も多分私は実行順序を与えることができ、チェーンとしてこれらの機能を実行して、リストの中に機能をプッシュすることができれば月、私は知っていますか?
lf = [Null,foo_1,foo_2,foo_3,foo_4,foo_5] # Null is for +1 issue here
def execu(lst, seq, raw_para):
# in some way
execu(lf,(1,2,3,4,5), 1) # = foo_1(foo_2(foo_3(foo_4(foo_5(1)))))
execu(lf,(1,2,3), 1) # = foo_1(foo_2(foo_3(1)))
execu(lf,(3,3,3), 1) # = foo_3(foo_3(foo_3(1)))
ありがとうございます。
RGS、
KC
解決
def execu(lst, seq, raw_para):
return reduce(lambda x, y: y(x), reversed(operator.itemgetter(*seq)(lst)), raw_para)
他のヒント
「LF」の「ヌル」の必要はありません。
def execu(lst, seq, raw_para):
para = raw_para
for i in reversed(seq):
para = lst[i](para)
return para
所属していません StackOverflow