我正在尝试将数据文件分成列表,具体取决于采集数据的日期(或纪元)。我试图通过告诉程序如果一个点的纪元与前一个点相同,将其添加到列表中,如果没有那么继续前进。我目前收到错误:
第31行,
if epoch[i] == epoch[i+1]:
TypeError: list indices must be integers, not float
这就是我现在拥有的东西(我还没有写下这一点,告诉它进入下一个时代)。
epoch=[]
wavelength=[]
flux=[]
text_file = open("datafile.dat", "r")
lines1 = text_file.read()
#print lines1
text_file.close()
a = [float(x) for x in lines1.split()]
a1=0
a2=1
a3=2
while a1<len(a):
epoch.append(float(a[a1]))
wavelength.append(float(a[a2]))
flux.append(float(a[a3]))
a1+=3
a2+=3
a3+=3
#print epoch
x=[]
y=[]
z=[]
i = epoch[0]
if epoch[i] == epoch[i+1]:
x.append(epoch[i])
y.append(wavelength[i])
z.append(flux[i])
i+=1
#print x
#print z
我无法解决我需要改变的问题!提前谢谢。
答案 0 :(得分:1)
你在这个行的列表中放了一个浮点数 - Python不能用于索引,因为它们不是明确的值:
epoch.append(float(a[a1]))
错误告诉您需要知道的一切。只需将i
投射到int
:
i = int(epoch[0])
答案 1 :(得分:1)
此行将epoch
中的值存储为浮点数:
epoch.append(float(a[a1]))
然后,您尝试使用epoch
的第一个值
epoch
i = epoch[0]
if epoch[i] == epoch[i+1]:
错误告诉您不能使用float
作为索引来访问列表。因此,您需要将值int
存储在epoch
中,或者在将其用作索引之前转换为int
。
答案 2 :(得分:0)
在这一行:
epoch.append(float(a[a1]))
在追加到列表纪元之前,您将所有项目都投射到浮点数。
所以你初始化索引i:
i = epoch[0]
将始终包含不允许作为索引的浮点数(2.5作为索引没有意义)。
您需要做的只是将索引i转换为整数:
i = int(epoch[0])
答案 3 :(得分:0)
替换:
i = epoch[0]
by:
i = 0