Ho una lista di datetimes da cui voglio costruire segmenti di tempo. In altre parole, attivare [t0, t1, ... tn]
in [(t0,t1),(t1,t2),...,(tn-1, tn)]
. L'ho fatto in questo modo:Posso contare sull'ordine di essere conservato in una tupla 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)
Domande ...
- Posso contare su tn-1 < tn per qualsiasi (tn-1, tn) dopo che li ho creato questo modo? (L'ordine è conservato?)
- È buona norma copiare l'elenco originale
mdtimes
con le descrizioni delle liste? Se non come dovrebbe essere fatto? Lo scopo per la costruzione di queste tuple è di scorrere su di esse e segmentare un set di dati con
tn-1
etn
. È un approccio ragionevole? vale a diredatasegment = [x for x in bigdata if ((x['datetime'] > tleft) and (x['datetime'] < tright))]
Grazie
btw: '(x ['datetime']> tleft) e (x ['datetime']
La domanda che non hai t ask: Dato 'x' è ordinato, è' x.reverse(); x.pop(); x.sort() 'una buona idea? Risposta: ** NO **; è orribile; 'x.pop (0)' farà la stessa cosa, e in ogni caso quasi tutte le risposte sono migliori dell'uso del metodo 'pop()'. –
Ho finito per andare con 'dtsegs = zip (mdtimes [:], mdtimes [1:])' – Pete