2012-02-24 58 views
0

我對此很新,希望這個問題有道理。 我有一個while循環,每次運行時都會附加一個列表。是否可以在列表中設置最大數量的索引,以便每次添加新索引時都會刪除最舊的條目?限制列表中的索引數

回答

4

不,但collections.deque應該可以正常工作。

>>> d = collections.deque(maxlen=3) 
>>> d.append(1) 
>>> d.append(2) 
>>> d.append(3) 
>>> d.append(4) 
>>> d 
deque([2, 3, 4], maxlen=3) 
+0

'deque'是一個很好的答案,你有我給予好評,但需要注意的是,如果你的'deque'大,你需要訪問中間的元素,可能會變得很慢(這是一個鏈表,每次從頭開始查找所需元素都需要遍歷)。 – kindall 2012-02-24 06:44:29

3

使用mod運算符。

for i in range(N): 

    L.insert(i%MAX_SIZE, object_to_be_added) 
0

如何使用POP(0)

d = range(10) 
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 

def additem(list,n,max=10): 
    if len(list) + 1 > max: 
     list.pop(0) 
    list.append(n) 

additem(d,10) 
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 
additem(d,11) 
[2, 3, 4, 5, 6, 7, 8, 9, 10, 11]