Python Tutorial오늘은 양방향 대기열을 소개합니다.
스택이나 큐를 시뮬레이션하기 위해 Python 목록의 .append 및 .pop 메서드를 사용할 수 있지만 목록의 첫 번째 요소를 삭제하거나 첫 번째 요소 전에 새 요소를 추가하는 것은 매우 시간이 많이 걸립니다. 목록의 모든 요소를 뒤로 이동해야 하기 때문입니다.
Python의 양방향 대기열은 collections.deque 클래스를 사용하여 구현됩니다. 양쪽 끝에서 요소를 빠르게 추가하거나 제거할 수 있는 스레드로부터 안전한 클래스입니다.
deque /dɛk/
collections.deque 클래스를 사용하여 캐싱을 구현할 수도 있습니다. 먼저 캐시 큐의 크기를 지정한 다음 큐의 헤드에서 만료된 요소를 제거하고 테일에 새 요소를 추가합니다.
Luciano Ramalho는 양방향 대기열의 기본 사용법을 설명하기 위해 예를 들었습니다.
from collections import deque dq = deque(range(10), maxlen=10) logging.info('dq -> %s', dq) dq.rotate(3) logging.info('dq -> %s', dq) dq.rotate(-4) logging.info('dq -> %s', dq) dq.extend([11, 22, 33]) logging.info('dq -> %s', dq) dq.extendleft([10, 20, 30, 40]) logging.info('dq -> %s', dq)复制代码
작업 결과:
INFO - dq -> deque([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], maxlen=10) INFO - dq -> deque([7, 8, 9, 0, 1, 2, 3, 4, 5, 6], maxlen=10) INFO - dq -> deque([1, 2, 3, 4, 5, 6, 7, 8, 9, 0], maxlen=10) INFO - dq -> deque([4, 5, 6, 7, 8, 9, 0, 11, 22, 33], maxlen=10) INFO - dq -> deque([40, 30, 20, 10, 4, 5, 6, 7, 8, 9], maxlen=10)复制代码
양방향 큐는 완벽하지 않습니다. 큐의 중간에서 요소를 삭제하면 큐의 헤드 및 테일 작업에만 최적화되므로 속도가 느려집니다.
관련 무료 학습 권장 사항: python 튜토리얼(동영상)
위 내용은 Python의 양방향 대기열에 대해 이야기해 보겠습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!