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