類似的主題已經打開,但我找不到我想要的東西,也無法自己解決。
我想要的是在回圈中從陣列中呼叫我的函式,但是每個函式需要的值是不同的。將所有值發送到所有函式(他們畢竟不會使用他們不需要的東西)或使用 if else 對我的所有 20 個函式進行編碼是一種解決方案,但似乎必須有更有效的方法。有解決辦法嗎?在此先感謝您的幫助。
def a_func(x1):
return x1
def b_func(y1):
return y1
mylist=['A','B']
dictionary = {'A': a_func, 'B':b_func}
def main(x1,y1):
for each in mylist:
value=dictionary[each](???) #x1 or x2 how can i send different variable according to each func
實際上,所有答案都是間接解決方案,但是ILS的評論在不同的多功能中起作用,我需要在問題中更具體,非常感謝,我理解邏輯。
uj5u.com熱心網友回復:
根據評論,您的實際情況比較復雜。
假設您有a_func一個引數,兩個引數,b_func并且您有三個變數a, b, c。main你想傳遞a給a_func和。我認為您需要在將引數傳遞給(即呼叫)之前按函式對引數進行分組。然后您可以使用將第 i 個引陣列傳遞給第 i 個函式。b, cb_funcmainmain((a,), (b, c))zip
def a_func(a0):
return a0
def b_func(a0, a1):
return (a0, a1)
func_list = [a_func, b_func]
def main(*argv):
for func, arg in zip(func_list, argv):
func(*arg)
main((a,), (b, c)) # In main, you call a_func(a) and b_func(b, c)
uj5u.com熱心網友回復:
你可以濫用**kwargs這個
def a_func(x1, **kwargs):
return x1
def b_func(y1, **kwargs):
return y1
mylist = ["A", "B"]
dictionary = {"A": a_func, "B": b_func}
def main(x1, y1):
for each in mylist:
value = dictionary[each](x1=x1, y1=y1)
print(value)
main(1,2)
輸出
1
2
uj5u.com熱心網友回復:
這是答案:
def a_func(x1):
return x1
def b_func(y1):
return y1
funcs = [a_func, b_func]
def main(inputs):
x1 = 0
y1 = 1
inputs = [x1, y1] # suppose it is given from out of this function
func_outputs = []
for i in range(len(funcs)):
func_output = funcs[i](inputs[i])
func_outputs.append(func_output)
print(func_output)
舉個例子:
inputs = [0, 1]
main(inputs)
輸出
0
1
uj5u.com熱心網友回復:
@EdoAkse 的回答略有不同。如果你不能修改a_func/ b_func,你可以用 lambdas 創建一個字典:
def a_func(x1):
return f"{x1=}"
def b_func(y1):
return f"{y1=}"
mylist = ["A", "B"]
dictionary = {
"A": lambda **kwargs: a_func(kwargs.get("x1")),
"B": lambda **kwargs: b_func(kwargs.get("y1")),
}
def main(x1, y1):
for each in mylist:
value = dictionary[each](x1=x1, y1=y1)
print(each, value)
main(10, 20)
印刷:
A x1=10
B y1=20
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/531965.html
標籤:Python数组
上一篇:加入流的所有行
下一篇:將值附加到陣列的反向嵌套樹
