Iterar n elementos sucessivos da lista (com sobreposição)

oitertools O módulo python implementa alguns blocos básicos de construção para iteradores. Como se costuma dizer, "eles formam uma álgebra iteradora". Eu esperava, mas não consegui encontrar uma maneira sucinta de fazer a seguinte iteração usando o módulo. Dada uma lista de números reais ordenados, por exemplo

a = [1.0,1.5,2.0,2.5,3.0]

... retorna uma nova lista (ou apenas itera) agrupando por algunsn valor, digamos2

b = [(1.0,1.5),(1.5,2.0),(2.0,2.5),(2.5,3.0)]

O jeito que eu descobri isso foi o seguinte. Primeiro, divida a lista em duas, com índices de pares e probabilidades:

even, odds = a[::2], a[1::2]

Em seguida, construa a nova lista:

b = [(even, odd) for even, odd in zip(evens, odds)]
b = sorted(b + [(odd, even) for even, odd in zip(evens[1:], odds)])

Em essência, é semelhante a uma média móvel.

Existe uma maneira sucinta de fazer isso (com ou sem ferramentas)?

PS .:

Inscrição

Imagine oa listar como o conjunto de registros de data e hora de alguns eventos ocorridos durante um experimento:

timestamp       event
47.8            1a
60.5            1b
67.4            2a
74.5            2b
78.5            1a
82.2            1b
89.5            2a
95.3            2b
101.7           1a
110.2           1b
121.9           2a
127.1           2b

...

Este código está sendo usado para segmentar esses eventos de acordo com diferentes janelas temporais. No momento, estou interessado nos dados entre2 eventos sucessivos; 'n> 2' seria usado apenas para fins exploratórios.

questionAnswers(4)

yourAnswerToTheQuestion