2016-12-29 39 views
0

我認爲這是一個簡單的答案,但我不能讓我的頭在附近。 基本上我有數據的列表,這是遞增時間戳由任意deltatime和夫婦與數據列表

span = 2 
datas = a['value'].split(",") 
Data_list = [".".join(datas[i:i+span]) for i in range(0, len(datas), span)] 

#Where a['value'] is a list 

我試圖做一個新的列表,從DATA_LIST耦合的第一個結果,一個時間戳的結果。然後第二與Date_time + deltatime,第三,Date_time + 2* deltatime

#Where T['value'] is a list 
Date_time = datetime.strptime(T['value'], '%d-%m-%Y %H:%M:%S').time() 
deltatime = 9e-5 

目前我使用這個代碼

################# 
DeltaTimeS = 9e-5 
################# 

Date_time = datetime.strptime(T['value'], '%d-%m-%Y %H:%M:%S').time() 
print 'Date_time =',Date_time 

def addSecs(tm, secs): 
    fulldate = datetime(100, 1, 1, tm.hour, tm.minute, tm.second) 
    fulldate = fulldate + timedelta(seconds=secs) 
    return fulldate.time() 

#a = datetime.now().time() 
a = Date_time 
b = addSecs(a, DeltaTimeS) 

#for a in Data['result'][:1]:  #only print the first result in the list 

span = 2 
datas = a['value'].split(",") 
Data_list = [".".join(datas[i:i+span]) for i in range(0, len(datas), span)] 

for a in Data_list: 
    print a,b 

它打印

0.02027 14:59:08.000090 
0.01549 14:59:08.000090 
0.00559 14:59:08.000090 
-0.00760 14:59:08.000090 
-0.02439 14:59:08.000090 

列表的所有數據和時間戳(只改變一次),而不是每次增加。任何幫助將是驚人的 也許用「len」來計算第一個列表的大小,然後將該範圍作爲「b」,但是如何讓b每次增加?

回答

1

注意:您所提供不能使用複製您收到的輸出的代碼。因此,我的回答是基於我從你的問題和許多即興創作中瞭解到的。

您每次打印的時間戳是b,通過調用addSecs評估一次。爲什麼你期望它對於最後一個for循環的每次迭代都有不同的值?

如果您想要推進時間戳,則需要爲每個循環迭代調用addSecs並相應地調整第二個參數。一個簡單的方法來實現這一目標,是用enumerate獲得循環迭代的計數器以及該計數器乘DeltaTimeS

from datetime import datetime, timedelta 

T = {} 
T['value'] = "29-12-2016 14:59:08" 
a = {} 
a['value'] = "1,2,3,4,5,6,7,8" 

DeltaTimeS = 9e-5 
Date_time = datetime.strptime(T['value'], '%d-%m-%Y %H:%M:%S').time() 

def addSecs(tm, secs): 
    fulldate = datetime(100, 1, 1, tm.hour, tm.minute, tm.second) 
    fulldate = fulldate + timedelta(seconds=secs) 
    return fulldate.time() 

span = 2 
datas = a['value'].split(",") 
Data_list = [".".join(datas[i:i+span]) for i in range(0, len(datas), span)] 

for i, x in enumerate(Data_list): 
    print x, addSecs(Date_time, i * DeltaTimeS) 

結果是:

1.2 14:59:08 
3.4 14:59:08.000090 
5.6 14:59:08.000180 
7.8 14:59:08.000270 
+0

非常感謝你。我沒有那麼多,我期待着有時間改變。更多的是我無法弄清楚如何使用date.time格式。我正在嘗試while循環和計數,但沒有讓我到那裏。 Thanksssss爲偉大的新工具 - 枚舉 - ! –

0

建議你用enumerate(),像:

import datetime as dt 

# inputs 
values = [ 
    0.02027, 
    0.01549, 
    0.00559, 
    -0.00760, 
    -0.02439, 
]  
start_time = dt.datetime.now() 

delta_time_seconds = 9e-5 
format = '%d-%m-%Y %H:%M:%S' 

# build a list of data, timestamp tuples  
list_of_tuples = [(value, (start_time + 
          dt.timedelta(seconds=i*delta_time_seconds) 
          ).strftime(format)) 
        for i, value in enumerate(values)] 

# show what we got 
for data_point in list_of_tuples: 
    print(data_point[0], data_point[1])