如何对日期时间或日期对象列表进行排序?


77

如何对日期和/或日期时间对象列表进行排序?接受的答案在这里是不是为我工作:

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

1
lst.sort()是一个就地操作
Andreas Jung,

1
您读过就地操作吗?为什么该方法返回对现有数据结构执行的操作?没有创建新列表,并且不返回现有列表。兄弟,这完全是故意和有据可查的行为。
Andreas Jung

1
sorted()曾对清单理解进行过如下操作: sorted([datetime.strptime(dt, "%Y-%m-%d %H:%M:%S") for dt in dateList])。我的日期是字符串,看上去像:“2018年9月7日十九时00分46秒”
格兰特香农

Answers:


123

你得到None,因为list.sort()它运行在原地,这意味着它不返回任何东西,但修改列表本身。您只需要呼叫a.sort()而无需a再次分配。

有一个内置函数sorted(),该函数返回列表的排序版本-a = sorted(a)也会执行您想要的操作。


3
哪种方法最好?他们在掩护下做同样的事情吗?
radtek 2014年

2
@radteklist.sort()更改从中调用它的对象(始终是列表)。sorted()适用于任何可迭代的对象,不仅限于列表。list.sort()如果列表很大,可能会更快一些,因为sorted()创建一个新列表并需要将元素复制到其中。
flyman'2
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.