Wie sortiere ich eine Liste von Datums- und / oder Datums- / Uhrzeitobjekten? Die akzeptierte Antwort hier arbeitet nicht für mich:
from datetime import datetime,date,timedelta
a=[date.today(), date.today() + timedelta(days=1), date.today() - timedelta(days=1)]
print a # prints '[datetime.date(2013, 1, 22), datetime.date(2013, 1, 23), datetime.date(2013, 1, 21)]'
a = a.sort()
print a # prints 'None'....what???
sorted()
ein Listenverständnis wie folgt verwendet :sorted([datetime.strptime(dt, "%Y-%m-%d %H:%M:%S") for dt in dateList])
. Meine Daten waren Zeichenfolgen, die aussahen wie: '2018-09-07 19:00:46'Antworten:
Sie erhalten,
None
weillist.sort()
es an Ort und Stelle funktioniert , was bedeutet, dass es nichts zurückgibt, sondern die Liste selbst ändert. Sie müssen nur anrufen,a.sort()
ohne esa
erneut zuzuweisen .Es gibt eine eingebaute Funktion
sorted()
, die eine sortierte Version der Liste zurückgibt -a = sorted(a)
sie macht auch, was Sie wollen.quelle
list.sort()
ändert das Objekt, von dem aus es aufgerufen wird (was immer eine Liste ist).sorted()
funktioniert auf jeder iterierbaren, nicht nur Liste.list.sort()
Dies ist möglicherweise etwas schneller, wenn Sie eine sehr große Liste haben, dasorted()
eine neue Liste erstellt wird und die Elemente darauf kopiert werden müssen.