我正在创建一个适合各种曲线数据的程序。我创造了一些它做定义拟合函数如下:如何在不使用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