Итерировать по n последовательным элементам списка (с перекрытием)

itertools Модуль Python реализует некоторые основные строительные блоки для итераторов. Как говорится, «они образуют алгебру итераторов». Я ожидал, но я не смог найти краткий способ сделать следующую итерацию с использованием модуля. Приведен список заказанных действительных чисел, например

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

... вернуть новый список (или просто повторить) группировку по некоторымn ценность, скажем2

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

Я нашел способ сделать это следующим образом. Сначала разделите список на две части, используя индексы четности и шансов:

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

Затем создайте новый список:

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

По сути, это похоже на скользящее среднее.

Есть краткий способ сделать это (с или без itertools)?

PS .:

заявка

Представьa перечислите как набор отметок времени некоторых событий, произошедших во время эксперимента:

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

...

Этот код используется для сегментирования этих событий в соответствии с различными временными окнами. Сейчас меня интересуют данные между2 последовательные события; 'n> 2' будет использоваться только для исследовательских целей.

Ответы на вопрос(4)

Ваш ответ на вопрос