2016-12-29 1 views
0

Ich denke, es gibt eine einfache Antwort zu diesem Thema, aber ich kann nicht meinen Kopf herumkommen. Im Prinzip habe ich eine Liste von Daten, die das Ergebnis vonInkrementieren Zeitstempel durch beliebige Deltatime und Paar mit Datenliste

ist
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 

Ich versuche, eine neue Liste zu machen Kopplung des ersten Ergebnisses aus DATA_LIST, mit einem Zeitstempel. Dann wird der zweite mit Date_time + deltatime, die dritten, Date_time + 2* deltatime usw.

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

Derzeit bin ich mit diesem Code

################# 
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 

Welche

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 

eine Liste druckt mit allen Daten und der Zeitstempel (der sich nur einmal ändert), anstatt jedes Mal zu erhöhen. Jede Hilfe wäre erstaunlich Vielleicht die Größe der ersten Liste mit "len" zählen und dann, dass die Reichweite für "b", aber wie bekomme ich b jedes Mal zu erhöhen?

Antwort

1

Hinweis: Der Code, den Sie zur Verfügung gestellt haben, können nicht die Ausgabe, die Sie erhalten zu reproduzieren verwendet werden. Daher basiert meine Antwort auf dem, was ich von Ihrer Frage verstehe und viel Improvisation.

Der Zeitstempel, den Sie jedes Mal drucken, ist b, der einmal durch Aufruf von addSecs ausgewertet wird. Warum erwarten Sie, dass es für jede Iteration Ihrer letzten for Schleife einen anderen Wert hat?

Wenn Sie den Zeitstempel erweitern möchten, müssen Sie für jede Schleifeniteration addSecs aufrufen und den zweiten Parameter entsprechend anpassen. Ein einfacher Weg, dies zu erreichen, ist enumerate zu verwenden, um einen Zähler der Schleifendurchläufe zu erhalten, und DeltaTimeS durch diesen Zähler zu multiplizieren:

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) 

Das Ergebnis ist:

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

Thank you very much. Ich war nicht so sehr, dass ich erwartete, dass sich die Zeit änderte. Mehr, dass ich nicht herausfinden konnte, wie man es mit dem date.time-Format macht. Ich habe mit While Loops versucht und gezählt, aber das hat mich nicht dorthin gebracht. Danke für das großartige neue Tool - aufzählen - !!! –

0

Schlagen Sie verwenden enumerate(), so etwas wie:

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]) 
Verwandte Themen