>  기사  >  백엔드 개발  >  Python의 양방향 대기열에 대해 이야기해 보겠습니다.

Python의 양방향 대기열에 대해 이야기해 보겠습니다.

coldplay.xixi
coldplay.xixi앞으로
2020-10-27 17:09:092324검색

Python Tutorial오늘은 양방향 대기열을 소개합니다.

Python의 양방향 대기열에 대해 이야기해 보겠습니다.

스택이나 큐를 시뮬레이션하기 위해 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)复制代码
  1. maxlen은 deque의 선택적 매개변수로 대기열 용량, 즉 배치할 수 있는 요소 수를 지정하는 데 사용됩니다.
  2. rotate() 메서드는 대기열을 회전할 수 있습니다. 입력 매개변수 n이 있습니다. n > 0이면 대기열의 가장 오른쪽에서 시작하는 n개의 요소가 왼쪽으로 이동합니다. n
  3. extend() 메서드는 대기열에 새 요소를 추가할 수 있으며 목록을 입력 매개 변수로 받아들이고 목록의 모든 요소를 ​​대기열에 추가합니다. 새 요소는 대기열의 오른쪽에 배치됩니다.
  4. 새 요소를 추가할 때 대기열이 가득 찬 것으로 확인되면 대기열의 선두에 있는 요소가 자동으로 삭제됩니다.
  5. extendleft(iter) 메서드는 새로 추가된 요소를 대기열의 왼쪽에 배치하는 것입니다. 그 외 속성은 extend() 메소드와 동일합니다.

양방향 큐는 완벽하지 않습니다. 큐의 중간에서 요소를 삭제하면 큐의 헤드 및 테일 작업에만 최적화되므로 속도가 느려집니다.

관련 무료 학습 권장 사항: python 튜토리얼(동영상)

위 내용은 Python의 양방향 대기열에 대해 이야기해 보겠습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 juejin.im에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제