我需要制作此代码的'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落在不同范围之间。
如果有代码可以做到这一点而没有那么多代码,那很好,但我不知道该怎么做!
答案 0 :(得分:0)
我不完全确定你想对你的函数做什么,但你可以在闭包中创建函数,而不是将它们作为项目放到某个列表中,如下所示:
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)