无法理解简单的错误消息

NXW*_*NXW 0 python int list

我已经定义了如下函数来尝试在两组数据之间进行插值.当我运行它时,我收到消息:

    for i, j in range(0, len(wavelength)):
TypeError: 'int' object is not iterable
Run Code Online (Sandbox Code Playgroud)

我不确定我做错了什么.不可否认,我对此并不擅长.

def accountforfilter(wavelength, flux, filterwavelength, throughput):
    filteredwavelength=[]
    filteredflux=[]

    for i in range(0, len(wavelength)):
        if wavelength[i] in filterwavelength[j]:
            j=filterwavelength.index(wavelength[i])
            filteredwavelength.append(wavelength[i])
            filteredflux.append(flux[i]*throughput[j])

        elif wavelength[i]<filterwavelength[j]<wavelength[i+1]:
            m=((throughput[j+1]-throughput[j])/(filterwavelength[j+1]-filterwavelength[j])
            c=throughput[j]-(m*(wavelength[i]))
            filteredwavelength.append(wavelength[i])
            filteredflux.append(flux[i]*(m*wavelength[i]+c)

    return filteredwavelength, filteredflux
Run Code Online (Sandbox Code Playgroud)

Han*_*rén 5

range()返回整数列表.通过使用,for i,j in range()您告诉Python将每个项目解压缩range()为两个值.但由于这些值是整数,它们是单个数据,因此不可迭代,因此您会收到错误消息.

你的代码看起来也有点奇怪.起初,似乎你想要遍历波长/滤波器波长的所有组合,这将是相同的

for i in range(len(wavelength)):
    for j in range(len(filterwavelength)):
         do_stuff()
Run Code Online (Sandbox Code Playgroud)

但是你正在修改j循环体内的参数,我不明白.

无论如何,编写所需代码可能会更容易,更清晰.但是从目前的代码来看,很难知道预期的是什么(并且应该在一个单独的问题中).