2015-11-08 44 views
0

我正在尋找一些很好的pythonic方法來做到這一點。我遇到了this answer,我喜歡。它基於deque,就像我找到的大多數其他答案一樣。我的問題是如果你想要窗口的內容超過已經包含在一個迭代中,我們需要做deque?什麼是是在一些簡單得多(背靠背for)這樣的benfits:Python - 滑動窗口可變長度 - 使用Deque的好處

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

事實上,如果您的所有數據已經​​在內存中,然後簡單地跟蹤你的窗口的開始和結束就足夠了。但是,情況並非總是如此 - 例如,在信號處理中,您通常會接收需要處理的數據流,然後寫入磁盤或流到其他組件。在這種情況下,您將需要使用某種形式的隊列而不是列表,因爲從長列表的前面刪除元素非常昂貴。