2012-05-08 39 views
3

問題描述:我有興趣在文本窗口中查看3個詞的左邊和右邊3個詞。基本情況具有w-3 w-2 w-1項w + 1 w + 2 w + 3的形式。我想在我的文本上實現一個滑動窗口,以便我能夠記錄每個術語的上下文單詞。因此,每個單詞都被視爲一個術語,但是當窗口移動時,它會變成一個上下文單詞等。但是,當該術語是第一個單詞時,左側沒有上下文單詞(t w + 1 w + 2 w + 3),當它是第二個單詞時,左側只有一個上下文單詞,依此類推。所以,我感興趣的是爲了實現這個靈活的滑動窗口(使用Python)的任何提示,無需分別編寫和指定每種可能的情況。靈活的滑動窗口(使用Python)

回顧一下:輸入的

實施例:

[ 「W1」, 「W2」, 「W3」, 「W4」, 「W5」, 「W6」, 「W7」, 「W8」, 「W9」, 「W10」]

輸出

T1,W2,W3 W4

W1 T2 W3 W4 W5

W1,W2,T3 W4 W5 W6

W1,W2,W3 T4 W5 W6 W7

__,W2,W3 W4 T5 W6 W7 W8

__ __等

我目前的計劃是實現這一點輸出中每行的單獨條件。

+1

是不是在正確的關係嗎? –

+0

你的其他離開。 – JoeFish

+0

我們必須前進,而不是倒退!向上,不向前!永遠,永遠捻轉! –

回答

5

如果您需要滑動窗口n字,請使用最大長度爲n的雙端隊列來實現緩衝區。

這應該說明的概念:

mystr = "StackOverflow"  
from collections import deque  
window = deque(maxlen=5) 
for char in mystr: 
    window.append(char) 
    print (''.join(list(window))) 

輸出:

S 
St 
Sta 
Stac 
Stack 
tackO 
ackOv 
ckOve 
kOver 
Overf 
verfl 
erflo 
rflow 
+0

請注意[python 2.7 – jrennie

+0

]中引入了[maxlen arg](http://docs.python.org/library/collections.html#collections.deque.maxlen)謝謝Li-aung,這對我很有用。現在我正在記錄從文件開頭和結尾處運行的一個術語的上下文。我需要deque的靈活性來存儲元素的最大長度,但也可能更少。 – sim