Python - 滑动窗口可变长度 - 使用Deque的优势

时间:2015-11-08 04:52:27

标签: python

我正在寻找一些好的pythonic方法来做到这一点。我遇到了我喜欢的this answer。它基于deque,就像我发现的大多数其他答案一样。我的问题是,如果您希望窗口的内容已包含在可迭代中,我们是否需要执行deque?对于更简单(背靠背for)这样的事情有什么好处:

s = 'abcd'

start = 0
end = len(s)

for i in range(end):
    print(s[start:i+1])


for i in range(1,end):
    print('{: >4s}'.format(s[i:end + 1]))

花式印刷输出:

a
ab
abc
abcd
 bcd
  cd
   d

1 个答案:

答案 0 :(得分:0)

实际上,如果您的所有数据都已存储在内存中,那么只需跟踪窗口的开头和结尾即可。但是,情况并非总是如此 - 例如,在信号处理中,您通常会接收需要处理的数据流,然后写入磁盘或流式传输到其他组件。在这种情况下,您将需要使用某种形式的队列而不是列表,因为从长列表的前面删除元素是昂贵的。