2012-11-29 77 views
2

我有例如如何在Python中實現循環緩衝區?

a=[12,2,4,67,8,9,23] 

一個矩陣,我想是附加價值說45到它,並刪除第一個值「12」 所以在本質上我想使

a = [2,4,67,8,9,23,45] 
代碼

我想使用常規矩陣而不是numpy矩陣,所以我不能使用hstack或vstack 如何在python中執行此操作?任何幫助將不勝感激,謝謝

+0

這不是一個滑動窗口;這是一個循環緩衝區。 –

+0

對不起,感謝您的信息 – user17151

回答

1

最簡單的方法:

a = a[1:] + [45] 
+0

這太棒了。應該想到它,我只是一個Python初學者。非常感謝 – user17151

+0

沒問題,但是如果性能是一個問題,FogleBird的答案實際上更有效。 – jaho

10

使用德克。

http://docs.python.org/2/library/collections.html#collections.deque

>>> import collections 
>>> d = collections.deque(maxlen=7) 
>>> d.extend([12,2,4,67,8,9,23]) 
>>> d.append(45) 
>>> print d 
deque([2, 4, 67, 8, 9, 23, 45], maxlen=7) 
+0

謝謝,但德克是什麼意思?並感謝您的答案,但我認爲我會與Marian的答案一起簡化 – user17151

+0

@ user17151 deque =雙端隊列。如果您有20個值,則使用哪一個並不重要。如果你有200萬的價值,那麼這個deque就是要去的,而不僅僅是一個清單。 – glglgl

+0

@ user17151:這很好,但是deque更高效,因爲每次添加元素時都不需要複製整個數據結構。 – FogleBird

0

你可以這樣做:

a=[12,2,4,67,8,9,23] 
a.append(45) 
a.pop(0)