我在写一段代码来过滤一些数据,并且遇到了一个问题。我目前有:如何在这种情况下表达j + 1?
def accountforfilter(wavelength, flux, filterwavelength, throughput):
filteredwavelength=[]
filteredflux=[]
for i in wavelength:
for j in filterwavelength:
if wavelength==filterwavelength:
j=filterwavelength.index(wavelength)
filteredwavelength.append(wavelength)
filteredflux.append(flux*throughput)
elif filterwavelength<wavelength<filterwavelength(j+1):
filteredwavelength.append(wavelength)
filteredflux.append(flux*f(wavelength))
#f is a function that interpolates using y=mx+c when wavelength and filterwavelength are not the same
elif wavelength<filterwavelength:
i+=1
elif wavelength>filterwavelength:
j+=1
return filteredwavelength, filteredflux
我的问题是与线:
elif filterwavelength<wavelength<filterwavelength(j+1):
这行不行,我得到的错误:
TypeError: 'list' object is not callable
如果我改变圆括号到方括号,即
elif filterwavelength<wavelength<filterwavelength[j+1]:
我得到的错误:
TypeError: list indices must be integers, not float
我不知道如何表达我的意思用另一种方式。
您必须在您的if语句中首次提及'filterwavelength'。 – xnx 2014-12-07 17:08:41
'for filter in filterwavelength','j = filterwavelength.index(wavelength)' - 你应该使用更多的描述性变量名来避免这些错误。 – poke 2014-12-07 17:09:26
不重用该变量。 'j + = 1'没有意义。另外,请记住,'i + = 1''' i'会在稍后“重置”。做一个调试会话。 – 2014-12-07 17:09:52