산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> python

파이썬 Queue: FIFO & LIFO 이해와 실전 예제

파이썬 Queue: FIFO & LIFO 이해와 실전 예제

파이썬에서 큐(Queue)란?

큐는 선형 순서로 항목을 저장하는 자료구조입니다. 항목은 뒤쪽(rear)에서 추가되고 앞쪽(front)에서 제거되며, 선입선출(FIFO, First-In First-Out) 원칙을 따릅니다. 큐는 논리적 양끝인 front와 rear를 노출하며, enqueue는 뒤쪽에서, dequeue는 앞쪽에서 수행합니다.

이 튜토리얼에서 배울 내용:

큐 모듈 작동 원리

물리적 줄서기와 유사: 줄 선 첫 사람이 먼저 서비스받음. 큐 자료구조에서 먼저 enqueue된 요소가 먼저 dequeue됩니다.

파이썬 Queue: FIFO & LIFO 이해와 실전 예제

rear는 새 항목 삽입 지점(예: 값 7). front는 항목이 나가는 지점; 첫 항목 제거 시 값 1 반환.

큐는 선형이므로 중간의 임의 요소를 바로 제거할 수 없으며, 앞서 있는 모든 요소를 dequeue해야 합니다.

파이썬 Queue: FIFO & LIFO 이해와 실전 예제

파이썬의 큐 종류

파이썬 queue 모듈은 두 가지 주요 큐 클래스 제공:

시작하기: 모듈 임포트

파이썬에 queue 모듈이 기본 탑재되어 외부 설치 불필요.

import queue

FIFO 큐 인스턴스화:

q1 = queue.Queue()

LIFO 큐 인스턴스화:

q1 = queue.LifoQueue()

주요 메서드

Queue와 LifoQueue는 같은 핵심 API 노출:

FIFO 큐 예제

단일 항목 Enqueue

import queue
q1 = queue.Queue()
q1.put(10)  # 큐에 10 추가

크기 제한으로 다중 항목 Enqueue

q1 = queue.Queue(maxsize=5)  # 최대 5개
for i in range(1, 6):
    q1.put(i)
print(q1.full())  # → True

출력: True

항목 Dequeue

item = q1.get()
print('Dequeued item:', item)

출력: Dequeued item: 10

LIFO 큐 예제

단일 항목 Enqueue

q1 = queue.LifoQueue()
q1.put(10)

항목 Dequeue

item = q1.get()
print('LIFO Dequeued:', item)

출력: Dequeued from LIFO: 10

일괄 연산

FIFO – 20개 숫자 Enqueue

q1 = queue.Queue()
for i in range(20):
    q1.put(i)

FIFO – 모두 Dequeue

while not q1.empty():
    print('Value:', q1.get())

출력: Value: 0 ... Value: 19

LIFO – 20개 숫자 Enqueue

q1 = queue.LifoQueue()
for i in range(20):
    q1.put(i)

LIFO – 모두 Dequeue

while not q1.empty():
    print('Value:', q1.get())

출력: Value: 19 ... Value: 0

큐 정렬 (버블 정렬)

q1 = queue.Queue()
for item in [11, 5, 4, 21, 3, 10]:
    q1.put(item)

n = q1.qsize()
for i in range(n):
    x = q1.get()
    for j in range(n-1):
        y = q1.get()
        if x > y:
            q1.put(y)
        else:
            q1.put(x)
        x = y
    q1.put(x)

while not q1.empty():
    print(q1.queue[0], end=' ')
    q1.get()

출력: 3 4 5 10 11 21

재귀로 큐 뒤집기

def reverse_queue(src, dest):
    item = src.get()
    if not src.empty():
        reverse_queue(src, dest)
    dest.put(item)
    return dest

q1 = queue.Queue()
for item in [11, 5, 4, 21, 3, 10]:
    q1.put(item)

q2 = queue.Queue()
reverse_queue(q1, q2)
while not q2.empty():
    print(q2.queue[0], end=' ')
    q2.get()

출력: 10 3 21 4 5 11

빠른 요약

python

  1. 파이썬 연산자 마스터하기: 종합 가이드
  2. Python 딕셔너리 마스터하기: 생성, 조작, 고급 기법
  3. Python strip() 메서드 완전 정복: 종합 가이드와 실전 예제
  4. Python len() 함수: 객체 길이 측정 실전 가이드
  5. 파이썬 yield 마스터하기: 제너레이터 vs return 실전 가이드
  6. 파이썬 collections.Counter: 효율적 카운팅, 업데이트, 산술 연산
  7. 파이썬 enumerate() 마스터하기: 리스트, 튜플, 문자열, 딕셔너리 인덱스와 함께 루프
  8. 파이썬 time.sleep(): 코드에 지연 추가하는 방법 (예제)
  9. 파이썬 list.index() – 요소 위치 찾기 실전 예제와 대안 기법
  10. FIFO vs LIFO: 핵심 차이점, 장단점 및 실무 적용 사례