2016-07-01 32 views
-2

我有一長串我現在正在使用的數據列表,其中包含'timestamp'和'quantity'的列表。但是,列表中的時間戳並非全部按順序排列(例如,時間戳[x]可以是140056,而時間戳[x + 1]可以是560)。我不打算安排它們,但是當發生這種情況時,將timestamp [x]的值加上timestamp [x + 1]。將數據[x]的值相加到數據[x + 1]

ps:數量的排列需要與繪圖時列表中的順序相同。

我一直在使用這個使用下面的代碼,其中時間戳是包含所有時間戳值列表的名稱:

for t in timestamp: 
    previous = timestamp[t-1] 
    increment = 0 
    if previous > timestamp[t]: 
     increment = previous 
    t += increment 
    delta = datetime.timedelta(0, (t - startTimeStamp)/1000); 
    timeAtT = fileStartDate + (delta + startTime) 
    print("time at t=" + str(t) + " is: " + str(timeAtT)); 
    previous = t 

但是它出來與類型錯誤:列表索引必須是整數,不是元組。我可以知道如何解決這個問題,或者其他方式來完成這項任務嗎?謝謝!

+0

't for timestamps'這遍歷*時間戳中的*項*而不是索引 –

+0

對不起,我忘記提及時間戳是包含所有時間戳值的列表名稱,您可以調出某些東西在列表中使用例如'print(timestamp [4])',並且它會發布這些值。但是,現在我想要做的是檢查列表中的所有內容。 –

+1

向我們展示'timestamp'的內容片段 – Jeff

回答

0

問題是,你正在對待t就好像它是索引的列表。在你的情況下,t保存列表的實際值,所以像timestamp[t]這樣的結構無效。要麼你想:

for t in range(len(timestamp)): 

或者,如果你想同時索引和值:

for (t, value) in enumerate(timestamp): 
0

當你for the in timestamp你在時間戳每個項目的價值做出t服食。但是,您嘗試使用t作爲製作previous的索引。要做到這一點,請嘗試:

for i, t, in enumerate(timestamp): 
    previous = timestamp[i] 
    current = t 

此外,當你得到這樣TypeErrors確保您嘗試打印出來的中間步驟,這樣你就可以清楚地看到什麼錯誤。

相關問題