2012-02-24 2 views
0

저는이 문제에 매우 익숙합니다. while 루프가 실행될 때마다 목록을 추가하는 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' 좋은 답변입니다, 당신은 내 upvote에있어,하지만'deque'가 큰 경우, 당신은 액세스 할 필요가 있습니다 중간에있는 요소로 다소 느려질 수 있습니다 (링크 된 목록이므로 처음부터 원하는 요소를 찾기 위해 매번 탐색해야 함). – kindall

3

mod 연산자를 사용하십시오.

for i in range(N): 

    L.insert(i%MAX_SIZE, object_to_be_added) 
0

어떻게 팝업을 사용하는 방법에 대한 (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] 
관련 문제