8

datetime オブジェクトのリストがあり、特定の時間枠内にあるオブジェクトを見つけたい:

import datetime

dates = [ datetime.datetime(2007, 1, 2, 0, 1),
          datetime.datetime(2007, 1, 3, 0, 2),
          datetime.datetime(2007, 1, 4, 0, 3),
          datetime.datetime(2007, 1, 5, 0, 4),
          datetime.datetime(2007, 1, 6, 0, 5),
          datetime.datetime(2007, 1, 7, 0, 6) ]
#in reality this is a list of over 25000 dates

mask = (dates>datetime.datetime(2007,1,3)) & \
       (dates<datetime.datetime(2007,1,6))

ただし、これにより次のエラーが発生します:「TypeError: datetime.datetime をリストと比較できません」

コードを修正するにはどうすればよいですか?

4

3 に答える 3

5
import datetime

dates = [ datetime.datetime(2007, 1, 2, 0, 1),
          datetime.datetime(2007, 1, 3, 0, 2),
          datetime.datetime(2007, 1, 4, 0, 3),
          datetime.datetime(2007, 1, 5, 0, 4),
          datetime.datetime(2007, 1, 6, 0, 5),
          datetime.datetime(2007, 1, 7, 0, 6) ]


within = [date for date in dates if datetime.datetime(2007,1,3) < date < datetime.datetime(2007,1,6)]

収量:

[datetime.datetime(2007, 1, 3, 0, 2), 
 datetime.datetime(2007, 1, 4, 0, 3), 
 datetime.datetime(2007, 1, 5, 0, 4)]
于 2013-01-03T16:40:23.497 に答える