2014-11-08 48 views
0

我试图根据数据发生的日期(或时代)将数据文件分成列表。我试图通过告诉程序来做到这一点,如果一点的时间点与前一点相同,那么将其添加到列表中,如果没有则继续前进。我目前得到的错误:Python中的整型/浮点型错误

线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

尝试投我为int>如果epoch [int(i)] == epoch [int(i)+1]: – 2014-11-08 16:38:38

回答

1

你把漂浮在列表与此LINE-Python可以用这些指标为,因为他们都没有限定值不起作用:

epoch.append(float(a[a1])) 

的这个错误告诉你,你需要知道的一切。只投iint

i = int(epoch[0]) 
1

这条线将值存储在epoch为花车:

epoch.append(float(a[a1])) 

然后尝试使用epoch的第一个值来访问epoch

i = epoch[0] 
if epoch[i] == epoch[i+1]: 

错误是告诉你,你不能使用float作为dex访问列表。因此,您需要将int的值存储在epoch中,或将其存储为int,然后再将其用作索引。

0

在这一行:

epoch.append(float(a[a1])) 

您是铸造的所有项目追加到列表时代之前浮动。

所以你指数的初始化我:

i = epoch[0] 

将始终包含这是不允许作为索引(2.5是没有意义的作为索引)浮动。

你需要做的,仅仅是投你的索引i为整数:

i = int(epoch[0]) 
0

替换:

i = epoch[0] 

由:

i = 0 
相关问题