Итератор с катаниями или скользящим окном?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Итератор с катаниями или скользящим окном?

Сообщение Anonymous »

Мне нужно окно катящегося (то есть скользящее окно), иерное по последовательности/итератору/генератору. (Итерация Python по умолчанию можно считать специальным случаем, когда длина окна равна 1.) Я в настоящее время использую следующий код. Как я могу сделать это более элегантно и/или эффективно?
def rolling_window(seq, window_size):
it = iter(seq)
win = [it.next() for cnt in xrange(window_size)] # First window
yield win
for e in it: # Subsequent windows
win[:-1] = win[1:]
win[-1] = e
yield win

if __name__=="__main__":
for w in rolling_window(xrange(6), 3):
print w

"""Example output:
[0, 1, 2]
[1, 2, 3]
[2, 3, 4]
[3, 4, 5]
"""
< /code>

для конкретного < /em> случая window_size == 2 < /code> (т.е. итерация над соседним, перекрывающимся Пары в последовательности), см. Также как я могу итерацию по перекрывающимся (текущим, следующим) парам значений из списка?.

Подробнее здесь: https://stackoverflow.com/questions/682 ... w-iterator
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»