如何使用一個函式的輸出作為另一個函式的引數。有未知 (X) 個函式,每個函式都不同。第一個函式的引數是已知的(我們稱之為 n)。
我試圖創建一個函式串列并將一個函式的結果用于另一個函式,我真的無處可去。
list = [function1, function2, function3, function4, function5.....functionX]
def nestedfunction(list, n):
a_1 = list[0](n)
a_2 = list[1](a_1)
a_3 = list[2](a_2)
a_4 = list[3](a_3)
a_5 = list[4](a_4)
......
a_x = list [len(list)-1](a_x-1)
print (a_x)
感謝您的幫助。
uj5u.com熱心網友回復:
迭代串列并n在每次迭代時覆寫,然后回傳它:
def nestedfunction(function_list, n):
for function in function_list:
n = function(n)
return n
uj5u.com熱心網友回復:
這比你做的要容易得多:
funcs = [function1, function2, function3, function4, function5.....functionX]
def nestedfunction(funcs, n):
for f in funcs:
n = f(n)
return n
uj5u.com熱心網友回復:
其他答案是這樣做的 Pythonic 方式。但我只是想指出,這是一種常見模式,在函式式編程中,我們會將其視為減少。所以這就是我們將如何執行此操作:
>>> import functools
>>> funcs = [lambda x: x 42, lambda x: x % 12, lambda x: x*2]
>>> n = 0
>>> functools.reduce(lambda a, f: f(a), funcs, n)
12
另請注意,如果我們想要每個單獨的步驟,我們可以使用標準庫中的相關工具,使用itertools:
>>> import itertools
>>> acc = itertools.accumulate(funcs, lambda a, f: f(a), initial=n)
>>> for step in acc:
... print(step)
...
0
42
6
12
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/370225.html
