Seite 1 von 1

Iterieren über Elemente einer Liste

Verfasst: Samstag 6. Februar 2016, 21:37
von BjoernLaemmerzahl
Hallo,

leider bin ich durch "Googlen" nicht auf eine Antwort zu meinem Problem gekommen. Ich hoffe ihr könnt mir helfen.

Folgendes Problem:
Konvertiere ein datetime-Object zu einenm Integer vom Typ Long.

Code: Alles auswählen

int(time.mktime(datetime.datetime(2012, 6, 1).timetuple()) * 1000)
Out[39]: 1338501600000L
Soweit so gut. Und jetzt das ganze für eine Liste von datetime-Objekten (nennen wir sie xdata1).

Code: Alles auswählen

xdata = map(lambda x: int(time.mktime(xdata1[x].timetuple())*1000), xdata1)
oder analog dazu:

Code: Alles auswählen

xdata = [ int(time.mktime(xdata1[x].timetuple())*1000) for x in xdata1 ]
Beides resultiert in:
TypeError: list indices must be integers, not datetime.datetime


Ich verstehe allerdings nicht warum. Sollte nicht einfach beide Befehle über jedes Element der Liste iterien?

Vielen Dank für eure Hilfe.

Re: Iterieren über Elemente einer Liste

Verfasst: Samstag 6. Februar 2016, 21:45
von BlackJack
@BjoernLaemmerzahl: Das `x` ist jeweils bereits ein einzelnes `datetime`-Objekt und Du versuchst damit als Index auf die Liste zuzugreifen. Genau was die Fehlermeldung bemängelt. Nenn das `x` vielleicht mal in `timestamp` um, dann sollte beim lesen klar werden was der Unsinn an dem ``xdata1[timestamp]``-Zugriff ist. Gute Namen sind wichtig! :-)

Re: Iterieren über Elemente einer Liste

Verfasst: Samstag 6. Februar 2016, 23:23
von BjoernLaemmerzahl
Verstehe. Ds macht natürlich keinen Sinn. Soweit habe ich den Fehler auch verstanden. Allerdings weisz ich jetzt nicht nach welcher Funktion ich suche. Im Prinzip versuche ich ja statt diesem Code:

Code: Alles auswählen

def bsp(x):
    return int(time.mktime(xdata1[x].timetuple())*1000)
    
map(bsp, range(len(xdata1)))
    


..eInen Einzeiler hinzubekommen, sprich ohne extra eine neue Funktion definieren zu müssen. Daher bin ich durch https://infohost.nmt.edu/tcc/help/pubs/ ... ction.html auf map() gekommen.

Wie müsste man das Problem denn nun richtig angehen?

Re: Iterieren über Elemente einer Liste

Verfasst: Samstag 6. Februar 2016, 23:53
von BlackJack
@BjoernLaemmerzahl: Du suchst nach keiner Funktion Du musst nur den Ausdruck richtig schreiben. `x` ist bereits das Objekt was Du haben willst, hör auf irgendwas mit `xdata1` in der Funktion oder dem Ausdruck anstellen zu wollen!

Re: Iterieren über Elemente einer Liste

Verfasst: Sonntag 7. Februar 2016, 00:05
von BjoernLaemmerzahl
Ach du meine Güte. Das kommt davon wenn man versucht um diese Uhrzeit noch etwas produktives zu machen. Danke für den Klapps auf den Hinterkopf! Nun funktioniert es :)