我正在創建一個適合各種曲線數據的程序。我創造了一些它做定義擬合函數如下:如何在不使用exec的情況下在每次迭代中對for循環使用不同的函數?
for i in range(len(Funcs2)):
func = "+".join(Funcs2[i])
func = func.format("[0:3]","[3:6]")
exec('def Trial1{0}(x,coeffs): return {1}'.format(i, func))
exec('def Trial1{0}_res(coeffs, x, y): return y - Trial1{0}
(x,coeffs)'.format(i))
如何再調用這些函數創建的每個功能反過來。目前,我做如下:
for i in range(len(Funcs2)):
exec('Trial1{0}_coeffs,Trial1{0}_cov,Trial1{0}_infodict,Trial1{0}_
mesg,Trial1{0}_flag =
scipy.optimize.leastsq(Trial1{0}_res,x02, args=(x, y),
full_output = True)'.format(i))
在這個循環中,每個創建函數被調用的loop.The問題的每一次迭代是,我有使用EXEC()做的,讓想我要做。這可能是不好的做法,並且必須有另一種方式來做到這一點。
而且,我不能使用超過numpy的,SciPy的其他圖書館和matplotlib
很抱歉的壞格式。該框只能使用很長的代碼行。
'Func2'是如何定義的? – Daniel
'Funcs2'的內容是什麼?首先,我懷疑你的第一個循環是一個好主意。 – chepner
Funcs2是元組列表。每個元組包含3個字符串。我同意循環是一個壞主意,但我想不出另一種動態創建和命名函數的方法 – GaeafBlaidde