[英]How to copy define function to make 'n' variations of it? (Python)
我需要将此代码制作'n'个副本:
ccfarray1=[]
def ccf1(binnum):
for i in datarange:
ccf=((a[i]-xbar)*(c[(i-binnum)]-ybar))/(norm*stdevx*stdevy)
parray.append(ccf)
calc=sum(parray)
ccfarray1.append(calc)
del parray[:]
return ccfarray1
例如,它的一个副本是:
ccfarray2=[]
def ccf2(binnum):
for i in datarange:
ccf=((a[i]-xbar)*(c[(i-binnum)]-ybar))/(norm*stdevx*stdevy)
parray.append(ccf)
calc=sum(parray)
ccfarray2.append(calc)
del parray[:]
return ccfarray2
因此,每次创建新数组时,ccfarray'n'。
我需要20次这样的操作,但这需要大量的复制和粘贴。 是否有一个优雅的解决方案来编码此代码,并且如果我需要更改所需次数。
我需要很多这些,因为我将它们视为垃圾箱。 如果'binnum'落在某个范围内,那么与binnum落在不同范围内相比,我需要将其附加到另一个数组中。
如果有代码可以在没有太多代码的情况下执行此操作,那很好,但是我不知道该怎么做!
我不确定要使用函数做什么,但是可以在闭包内部创建函数,然后将它们作为项目放入某些列表中,如下所示:
def get_functions(count):
ccfarrays=map(lambda: [], range(count))
def get_nth_func(n):
def ccf1(binnum):
for i in datarange:
ccf=((a[i]-xbar)*(c[(i-binnum)]-ybar))/(norm*stdevx*stdevy)
parray.append(ccf)
calc=sum(parray)
ccfarray[n].append(calc)
del parray[:]
return ccfarray[n]
return ccf1
return map(get_nth_func, range(count)
因此,如果您需要20个函数,则可以像这样创建它们:
f = get_functions(20)
而不是这样称呼他们:
f[6](binnum)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.