Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python Queue and Deque:단계별 가이드

Python 대기열은 FIFO 규칙을 사용하는 목록을 생성할 수 있는 내장 라이브러리입니다. Python deque는 반대 규칙인 LIFO 대기열 또는 후입선출을 사용합니다. 둘 다 스택과 대기열에서 작동합니다.


Python에서 작업할 때 목록 대신 항목 대기열을 만들고 싶을 수 있습니다. 예를 들어, 회의 등록을 추적하는 프로그램을 작성한다고 가정해 보겠습니다. 우리가 목록에 누군가를 추가할 때 대기열의 맨 뒤에 배치하고 맨 앞의 사람들이 입장하기 시작하면서 대기열을 통해 진행하기를 원합니다.

Python에는 이러한 유형의 문제를 해결하도록 설계된 내장 라이브러리가 있습니다. 대기열. 큐는 Python의 스택과 유사하지만 큐를 사용하면 가장 최근에 추가된 항목을 제거한다는 주요 차이점이 있습니다. 반면 스택에서는 가장 최근에 추가된 항목을 제거합니다.

이 튜토리얼에서는 Python의 기본 큐와 큐를 구현하는 방법을 설명합니다.

<내비>
  • 대기열 입문서
  • 파이썬 대기열
  • 파이썬 데크 예제
  • 결론

대기열 입문서

Python 목록으로 작업할 때 도움이 되는 대기열은 목록에서 항목을 넣은 순서대로 가져오려는 경우에 유용합니다. 이전 예를 사용하려면 회의에 참석할 때 다음 위치에 있어야 합니다. 처음 등록할 때 줄 뒤에. 그러나 목록에 있는 사람들이 들어오기 시작하면 목록에서 더 위로 이동해야 합니다.

대기열은 임의 액세스가 아니라는 점에서 배열 및 목록과 다릅니다. 대기열에 저장된 데이터에는 특정 순서가 있습니다. 따라서 대기열에 항목을 추가하려는 경우 끝에 추가됩니다. 이것을 first-in이라고 합니다. , first-out , 또는 줄여서 FIFO 대기열입니다.

Python에서는 표준 목록을 대기열로 사용할 수 있습니다. 그러나 목록의 시작 부분에서 요소를 변경하려면 목록의 다른 모든 요소를 ​​아래로 이동해야 하기 때문에 요소를 삽입 및 제거하는 경우 목록이 상당히 느릴 수 있습니다. 따라서 선입 선출 목록을 구현해야 하는 경우 대기열을 사용해야 합니다.

파이썬 대기열

그렇다면 파이썬에서 큐를 어떻게 구현합니까? 그렇게 하려면 내장된 큐 라이브러리를 사용해야 합니다. 대기열 모듈에는 대기열에 대한 여러 가지 유용한 클래스가 포함되어 있지만 이 자습서에서는 queue.Queue에 중점을 둘 것입니다. 수업.

참가자의 81%는 부트캠프에 참석한 후 기술 직업 전망에 대해 더 자신감을 느꼈다고 말했습니다. 지금 부트캠프에 참여하십시오.

부트캠프 졸업생은 부트캠프 시작부터 첫 직장을 찾는 데까지 6개월도 채 걸리지 않았습니다.

우리가 지역 극장에 가서 최신 영화를 보고 싶어하는 사람들을 추적하는 프로그램을 만들고 있다고 가정해 봅시다. 대기열을 사용하여 영화를 보고 싶어하는 사람들의 대기자 명단을 추적할 수 있습니다.

먼저 대기열 클래스를 정의해야 합니다. 다음 코드를 사용하여 이를 수행할 수 있습니다.

from queue import Queue
waitlist = Queue()

이제 대기열을 만들 준비가 되었습니다. put() 함수를 사용하면 데이터를 put할 수 있습니다. 대기열에. 아래 코드에서 우리는 영화를 보기 위해 방금 등록한 5명의 대기자 명단에 추가할 것입니다:

waitlist.put('Erin')
waitlist.put('Samantha')
waitlist.put('Joe')
waitlist.put('Martin')
waitlist.put('Helena')

이제 대기열에 5개의 이름을 추가했습니다. Erin은 대기열의 첫 번째이고 Samantha는 마지막인 Helena에 도달할 때까지 계속됩니다. get()을 사용하여 이를 시연할 수 있습니다. 다음과 같은 기능:

print(waitlist.get())

코드는 다음을 반환합니다.

Erin

보시다시피 Erin은 대기열의 첫 번째입니다. 대기열에 있는 처음 두 이름을 인쇄하려면 get()을 사용합니다. 두 번 기능:

print(waitlist.get())
print(waitlist.get())

코드는 다음을 반환합니다.

Erin
Samantha

파이썬 데크 예제

그러나 대기열의 양쪽 끝에서 여러 항목을 추가하거나 제거하려면 어떻게 해야 합니까? 여기에서 deque 함수가 등장합니다. deque를 사용하여 대기열의 시작 또는 끝에서 요소를 추가 및 제거할 수 있는 양방향 대기열을 만들 수 있습니다. 데크는 last-in입니다. ,first-in , 또는 줄여서 LIFO.

영화의 대기자 명단에 이름을 저장하는 위와 같은 예를 사용하겠습니다. 먼저 deque 함수를 선언합니다.

from collections import deque
waitlist = deque()

이제 데크를 초기화했으므로 대기 목록에 있는 이름 목록을 데크에 추가할 수 있습니다.

waitlist.append('Erin')
waitlist.append('Samantha')
waitlist.append('Joe')
waitlist.append('Martin')
waitlist.append('Helena')

보시다시피 append()를 사용했습니다. 항목을 대기열에 넣는 함수입니다. 대기자 명단에 저장된 값을 보려면 다음 코드를 사용할 수 있습니다.

print(waitlist)

코드는 다음을 반환합니다.

deque(['Erin', 'Samantha', 'Joe', 'Martin', 'Helena'])

보시다시피 데이터는 deque에 삽입한 순서대로 저장되었습니다. 하지만 대기열에서 첫 번째 항목을 제거하려면 어떻게 해야 할까요? popleft()를 사용할 수 있습니다. 이 목표를 달성하기 위한 기능입니다. 다음은 예입니다:

waitlist.popleft()
print(waitlist)

코드가 목록의 첫 번째 항목인 Erin을 제거했습니다. — 다음을 반환합니다.

deque(['Samantha', 'Joe', 'Martin', 'Helena'])

deque의 모든 항목을 제거하려면 clear() 함수를 사용할 수 있습니다.

deque.clear()
print(waitlist)

우리 코드의 결과는 다음과 같습니다:

deque([])

보시다시피 deque는 비어 있지만 객체는 여전히 존재합니다.

결론

그게 다야! 이 기사에서는 대기열이 데이터를 저장하는 데 선입선출 방식을 채택할 수 있게 해주는 데이터 구조 유형에 대해 논의했습니다. 대기열을 사용하는 한 가지 예는 새 제품의 대기자 명단을 유지하는 것입니다.

또한 큐에서 요소를 추가 및 제거할 수 있는 양방향 큐를 만들기 위해 deque를 사용하는 방법에 대해서도 논의했습니다. 이제 나만의 쿼리와 데크를 작성할 준비가 되었습니다!

Python은 다양한 전문 프로그래밍 환경에서 사용됩니다. 다운로드 무료 Career Karma 앱 오늘은 Python이 기술 분야에서 꿈의 경력을 시작하는 데 어떻게 도움이 되는지 알아보세요!