2014-11-08 75 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 
相關問題