PHpullh

PYTHON · 컬렉션

deque 활용

deque는 양끝에서 O(1)으로 삽입/삭제가 가능한 양방향 큐입니다.

컬렉션중급deque양방향 큐슬라이딩 윈도우

핵심 설명

deque는 양끝에서 O(1)으로 삽입/삭제가 가능한 양방향 큐입니다.

Python code

from collections import deque

# 기본 사용
dq = deque([1, 2, 3, 4, 5])
dq.appendleft(0)      # 왼쪽 추가
dq.append(6)           # 오른쪽 추가
print(dq)  # deque([0, 1, 2, 3, 4, 5, 6])

dq.popleft()           # 왼쪽 제거 O(1)
dq.pop()               # 오른쪽 제거 O(1)

# 회전
dq.rotate(2)           # 오른쪽으로 2칸
print(dq)
dq.rotate(-2)          # 왼쪽으로 2칸

# maxlen: 고정 크기 버퍼 (슬라이딩 윈도우)
buffer = deque(maxlen=3)
for i in range(5):
    buffer.append(i)
    print(f"  추가 {i}: {list(buffer)}")
# 마지막: [2, 3, 4]

# 이동 평균 계산
def moving_avg(data, window=3):
    buf = deque(maxlen=window)
    results = []
    for val in data:
        buf.append(val)
        results.append(sum(buf) / len(buf))
    return results

prices = [100, 102, 104, 103, 105, 107]
print(moving_avg(prices, 3))

학습 팁

maxlen 설정된 deque는 가득 차면 반대쪽 원소를 자동으로 제거하여 슬라이딩 윈도우에 적합합니다.

주의할 점

deque의 인덱스 접근은 O(n)입니다. 랜덤 접근이 빈번하면 리스트를 사용하세요.

자주 묻는 질문

deque 활용란 무엇인가요?

deque 는 양끝에서 O(1)으로 삽입/삭제가 가능한 양방향 큐입니다.

deque 활용 학습 시 주의할 점은 무엇인가요?

deque 의 인덱스 접근은 O(n)입니다. 랜덤 접근이 빈번하면 리스트를 사용하세요.

Continue Learning

Python 학습을 이어가세요

총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.