Tengo una lista de fechas a partir de las cuales quiero construir segmentos de tiempo. En otras palabras, gire [t0, t1, ... tn]
en [(t0,t1),(t1,t2),...,(tn-1, tn)]
. Yo he hecho de esta manera:¿Puedo contar con que se conserve el orden en una tupla de Python?
# 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)
Preguntas ...
- ¿Puedo contar con tn-1 < tn para cualquier (tn-1, tn) después de que les he creado este ¿camino? (¿Se conserva el pedido?)
- ¿Es una buena práctica copiar la lista original
mdtimes
con listas de comprensión? Si no, ¿cómo debería hacerse? El propósito de la construcción de estas tuplas es iterar sobre ellas y segmentar un conjunto de datos con
tn-1
ytn
. ¿Es este un enfoque razonable? es decir,datasegment = [x for x in bigdata if ((x['datetime'] > tleft) and (x['datetime'] < tright))]
Gracias
btw: '(x ['datetime']> tleft) y (x ['datetime']
La pregunta que no hiciste t ask: Dado que 'x' está ordenado, es' x.reverse(); x.pop(); x.sort() 'una buena idea? Respuesta: ** NO **; es horrible 'x.pop (0)' hará lo mismo, y en cualquier caso, casi todas las respuestas son mejores que usar el método 'pop()'. –
Terminé yendo con 'dtsegs = zip (mdtimes [:], mdtimes [1:])' – Pete