【发布时间】:2011-05-18 14:43:48
【问题描述】:
我有一个日期时间列表,我想从中构建时间段。换句话说,将[t0, t1, ... tn] 变成[(t0,t1),(t1,t2),...,(tn-1, tn)]。我是这样做的:
# start by sorting list of datetimes
mdtimes.sort()
# construct tuples which represent possible start and end dates
# left edges
dtg0 = [x for x in mdtimes]
dtg0.pop()
# right edges
dtg1 = [x for x in mdtimes]
dtg1.reverse()
dtg1.pop()
dtg1.sort()
dtsegs = zip(dtg0,dtg1)
问题...
- 在我以这种方式创建任何 (tn-1,tn) 之后,我可以指望 tn-1
- 使用列表推导复制原始
mdtimes列表是否是一种好习惯?如果不是应该怎么做? -
构造这些元组的目的是遍历它们并用
tn-1和tn分割数据集。这是一个合理的方法吗?即datasegment = [x for x in bigdata if ( (x['datetime'] > tleft) and (x['datetime'] < tright))]
谢谢
【问题讨论】:
-
顺便说一句:
(x['datetime'] > tleft) and (x['datetime'] < tright)是(tleft < x['datetime'] < tright) -
你没有问的问题:给定
x已排序,x.reverse(); x.pop(); x.sort()是个好主意吗?答案:否;太可怕了;x.pop(0)会做同样的事情,在任何情况下,几乎任何答案都比使用pop()方法更好。 -
我最终选择了
dtsegs = zip(mdtimes[:],mdtimes[1:])