Python 양 단 대기 열 deque 의 실현
양 단 대기 열 deque 는 임의의 한 끝 에서 요 소 를 추가 하고 삭제 하 는 것 을 지원 합 니 다.그 중에서 스 택 과 대기 열 은 쌍 단 대기 열의 퇴화 형식 으로 그들의 입 출력 은 한 끝 에 제한 되 어 있다.
기본 용법
우선 용기 collections.deque()함수 의 기본 용법 을 살 펴 보 자.구체 적 인 코드 는 다음 과 같다.
import collections
c = collections.deque('abcdefg')
print(" :", c)
print(" :", len(c))
print(" :", c[0])
print(" :", c[-1])
실행 후 효 과 는 다음 과 같 습 니 다.채우다
양 끝 대기 열 이기 때문에 이 대기 열 은 임의의 한 끝 에서 요 소 를 추가 하거나 삭제 하 는 것 을 지원 합 니 다.다음은 양 끝의 추가 와 삭제 작업 을 실현 합 니 다.구체 적 인 코드 는 다음 과 같 습 니 다.
import collections
c = collections.deque()
#
c.extend("abcdefg")
# ( )
c.append('h')
print(c)
# ( )
c.extendleft('i')
print(c)
#
c.pop()
print(c)
#
c.popleft()
print(c)
#
c.remove('c')
print(c)
실행 후 효 과 는 다음 과 같 습 니 다.list 배열 을 사용 하 는 것 과 마찬가지 로 append 를 통 해 추가 합 니 다.기본 append 는 오른쪽 끝(끝)부터 추가 합 니 다.전단 부터 추가 하려 면 extendeleft()함 수 를 사용 할 수 있 습 니 다.삭 제 는 pop()함 수 를 사용 하여 오른쪽 끝(끝)부터 삭제 하고 popleft()는 왼쪽 끝 부터 삭제 할 수 있 습 니 다.임의로 삭제 할 경우 remove()를 직접 사용 할 수 있 습 니 다.
스 레 드 보안
양 단 대기 열 은 스 레 드 가 안전 합 니 다.실제 응용 에서 우 리 는 서로 다른 스 레 드 에서 양 단 소비 대기 열의 내용 을 동시에 사용 할 수 있 습 니 다.구체 적 인 코드 는 다음 과 같다.
import collections
import threading
import time
def getItem(lor, method):
while True:
try:
next = method()
except IndexError:
break
else:
print("{0}:{1}".format(lor, next))
time.sleep(0.1)
print('{0}:None'.format(lor))
return
c = collections.deque("abcdefg")
t1 = threading.Thread(target=getItem, args=('Left', c.popleft))
t2 = threading.Thread(target=getItem, args=('Right', c.popleft))
t1.start()
t2.start()
t1.join()
t2.join()
실행 후 효 과 는 다음 과 같 습 니 다.위의 코드 에서 두 개의 스 레 드 는 양 끝 대기 열 deque 가 비어 있 을 때 까지 요 소 를 교체 해서 삭제 합 니 다.중복 되 지 않 은 요소 가 삭 제 된 것 을 볼 수 있 습 니 다.
빙빙 돌다
양 끝 대기 열 deque 의 또 다른 유용 한 점 은 임의의 방향 으로 회전 하여 일부 요 소 를 건 너 뛰 는 것 입 니 다.
예 를 들 어 deque 쌍 단 대기 열 을 오른쪽으로 회전(정 회전 값 사용)하면 오른쪽 에서 요 소 를 추출 하고 왼쪽 으로 이동 합 니 다.마찬가지 로 왼쪽으로 회전(마이너스)하면 왼쪽 에서 원 소 를 오른쪽 으로 이동 합 니 다.
우 리 는 코드 를 보면 매우 잘 알 수 있다.
import collections
a = collections.deque("abcdefg")
b = collections.deque("abcdefg")
c = collections.deque("abcdefg")
print(a)
b.rotate(2)
print(b)
c.rotate(-2)
print(c)
실행 후 효 과 는 다음 과 같 습 니 다.b 의 앞 두 글자 가 앞으로 이동 하 는 것 을 볼 수 있다.c 의 앞 두 글자 가 뒤로 이동 합 니 다.
양 끝 대기 열 크기 제한
실제 2 단 대기 열 작업 에서 우 리 는 2 단 대기 열 deque 인 스 턴 스 의 최대 길 이 를 설정 하여 이 크기 를 초과 하지 않도록 할 수 있 습 니 다.이 조작 은 길이 가 불확실 한 흐름 에서 마지막 n 개의 요 소 를 찾 는 데 매우 유용 하 다.
우 리 는 먼저 코드 를 보 자.
import collections
import random
c1 = collections.deque(maxlen=5)
c2 = collections.deque(maxlen=3)
for i in range(8):
r = random.randint(1, 100)
print(r)
c1.append(r)
c2.append(r)
print(c1)
print(c2)
실행 후 효 과 는 다음 과 같 습 니 다.위의 코드 에서 우 리 는 쌍 단 대기 열 deque 의 최대 길 이 를 설정 했다 는 것 을 알 게 되 었 습 니 다.그러면 데 이 터 를 아무리 추가 하 더 라 도 길 이 는 영원히 변 하지 않 습 니 다.이 동시에 추가 한 데 이 터 는 순서대로 맨 앞(왼쪽)의 값 을 대체 합 니 다.
파 이 썬 2 단 대기 열 deque 의 실현 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 파 이 썬 2 단 대기 열 deque 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.