6

我正在尝试使用以下方法汇总 datetime.datetime 对象列表:

from datetime import datetime, timedelta
d= [datetime.datetime(2013, 5, 1, 9, 31, 24), datetime.datetime(2013, 6, 11, 17, 22, 18), datetime.datetime(2013, 4, 3, 16, 6, 59)]

sum_d = sum(d, timedelta())

我得到错误:

TypeError: unsupported operand type(s) for +: 'datetime.datetime' and 'datetime.datetime'

知道我做错了什么或如何总结此列表吗?

我想得到我正在考虑的这个列表的平均值:

 d_avg = sum(d, timedelta()) / len(d)

谢谢!

4

2 回答 2

14

那只是因为您无法添加时间。您可以添加时间增量,但不能添加时间本身。

我的意思是,1995 年 8 月 3+ 454 年 6 月19日是多少?这没有意义。您可以添加与第 0 年的距离,但这与添加日期本身不同。

你希望从这个计算中得到什么?


如果您希望找到均值(为什么?),您将不得不使用不太直接的路线

import datetime

d = [datetime.datetime(2013, 5, 1, 9, 31, 24), datetime.datetime(2013, 6, 11, 17, 22, 18), datetime.datetime(2013, 4, 3, 16, 6, 59)]

d[0] + sum((d_i-d[0] for d_i in d), datetime.timedelta(0)) / len(d)
#>>> datetime.datetime(2013, 5, 5, 22, 20, 13, 666667)

这会找到来自 的偏移量总和d[0],表示那些,然后将偏移量加回去。

于 2013-09-29T02:37:03.763 回答
2

您无法总结此列表:如错误消息所述,datetime.datetime无法添加对象。例如,您希望datetime.datetime(2013, 5, 1, 9, 31, 24), datetime.datetime(2013, 6, 11, 17, 22, 18)返回地球上的什么?Python 通常不会做毫无意义的事情;-)

于 2013-09-29T02:38:44.540 回答