2013-09-29 112 views
2

我想總結一個datetime.datetime對象的列表使用:datetime.datetime對象的總和給了一個錯誤TypeError:不支持的操作數類型爲+:'datetime.datetime'和'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) 

謝謝!

回答

8

這只是因爲你不能添加時間。你可以添加時間增量,但不是時間本身。

我的意思是,什麼是3 rd 1995年8月+ 19 th 6月454?這沒有意義。您可以添加從第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]偏移量的總和,是指那些然後再添加該偏移量。

+0

這些日期的平均值,將很好地把它作爲timedelta對象。 – mongotop

3

您不能總結此列表:如錯誤消息所述,datetime.datetime對象無法添加。例如,地球上有什麼,你會期望datetime.datetime(2013, 5, 1, 9, 31, 24), datetime.datetime(2013, 6, 11, 17, 22, 18)返回? Python通常不會做任何沒有任何意義的事情;-)

相關問題