Iterieren über Elemente einer Liste

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
BjoernLaemmerzahl
User
Beiträge: 22
Registriert: Sonntag 17. Mai 2015, 12:22

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.
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! :-)
BjoernLaemmerzahl
User
Beiträge: 22
Registriert: Sonntag 17. Mai 2015, 12:22

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?
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!
BjoernLaemmerzahl
User
Beiträge: 22
Registriert: Sonntag 17. Mai 2015, 12:22

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 :)
Antworten