본문 바로가기
IT/파이썬 라이브러리 (Python)

#007 파이썬 라이브러리 : collections.deque 자료의 양쪽 끝에서 삽입 삭제

by DoitSQL 2023. 4. 2.
728x90

파이썬 라이브러리 collections.deque

#007 파이썬 라이브러리 : collections.deque 자료의 양쪽 끝에서 삽입 삭제

Python collections.deque는 큐의 양쪽 끝에서 요소의 효율적인 삽입 및 삭제를 지원하는 컨테이너입니다. 이중 링크 목록을 사용하여 구현되며 큐의 양쪽 끝에서 요소에 액세스 하고 수정하기 위한 O(1) 시간 복잡성을 제공합니다.

 

O(1) 시간 복잡성이란 일정한 복잡도(constant complexity)라고 하며, 입력값이 증가하더라도 시간이 늘어나지 않는다는 것을 의미합니다. 다시 말해 입력값의 크기와 관계없이, 즉시 출력값을 얻어낼 수 있다는 의미입니다.

 

즉, deque는 앞과 뒤에서 데이터를 처리할 수 있는 양방향 자료형으로, 스택(stack)처럼 써도 되고 큐(queue)처럼 써도 된다는 것입니다.


collections.deque 예제

collections.deque를 사용하려면 먼저 collections 모듈에서 가져와야 합니다. 다음은 예입니다.

from collections import deque

# create a deque object
mydeque = deque()

# append elements to the deque
mydeque.append(2)
mydeque.append(3)
mydeque.append(4)
mydeque.appendleft(1)

print(mydeque)

# access elements from the deque
print(mydeque[0])      # output: 1
print(mydeque[-1])     # output: 4

# remove elements from the deque
mydeque.pop()          # remove the last element
mydeque.popleft()      # remove the first element

print(mydeque)

# append elements from the deque
mydeque.append(5)      # append to the last
mydeque.appendleft(0)  # append to the first

# print the remaining elements of the deque
print(mydeque)         # output: deque([0, 2, 3, 5])

▶ 결과

deque([1, 2, 3, 4])
1
4
deque([2, 3])
deque([0, 2, 3, 5])

▶ 설명

위의 예에서는 deque() 생성자를 사용하여 deque 객체를 만듭니다. 그런 다음 append() 메서드를 사용하여 deque에 요소를 추가합니다. append()는 오른쪽에 추가하고 appendleft()는 왼쪽에 추가합니다. 인덱싱을 사용하여 deque의 양쪽 끝에서 요소에 액세스 할 수 있습니다. pop() 메서드는 deque에서 마지막 요소를 제거하고 popleft() 메서드는 첫 번째 요소를 제거합니다. 마지막으로 print() 함수를 사용하여 deque의 나머지 요소를 인쇄합니다.

 

요약하면 Python collections.deque는 컨테이너의 양쪽 끝에서 일정한 시간 삽입 및 삭제를 지원하여 대기열 및 스택으로 작업하는 빠르고 효율적인 방법을 제공합니다.


rotate 함수

Python collections.deque에서 rotate() 메서드는 deque의 요소를 지정된 단계 수만큼 오른쪽 또는 왼쪽으로 이동하는 데 사용됩니다. 회전 작업이 제자리에서 수행되며 이는 원래 deque가 수정됨을 의미합니다.

 

rotate() 메서드는 요소를 회전할 단계 수를 지정하는 단일 인수를 사용합니다. 인수가 양수이면 요소가 오른쪽으로 이동하고 음수 인수이면 요소가 왼쪽으로 이동합니다. 인수가 deque의 길이보다 크면 deque가 여러 번 회전됩니다.

 

다음은 rotate() 메서드를 사용하는 예입니다.

from collections import deque

# create a deque object
mydeque = deque([1, 2, 3, 4, 5])

# rotate the deque to the right by 2 steps
mydeque.rotate(2)

print(mydeque)  # Output: deque([4, 5, 1, 2, 3])

# rotate the deque to the left by 3 steps
mydeque.rotate(-3)

print(mydeque)  # Output: deque([2, 3, 4, 5, 1])

▶ 결과

deque([4, 5, 1, 2, 3])
deque([2, 3, 4, 5, 1])

▶ 설명

위의 예에서 [1, 2, 3, 4, 5] 요소를 사용하여 deque 개체를 만듭니다. 그런 다음 rotate() 메서드를 사용하여 deque를 오른쪽으로 2단계 회전합니다. 이 메서드는 [4, 5] 요소를 deque의 앞쪽으로 이동합니다. 회전이 올바르게 수행되는지 확인하기 위해 deque를 인쇄합니다.

 

다음으로, rotate() 메서드를 사용하여 deque를 왼쪽으로 3단계 회전합니다. 이 메서드는 [1, 2, 3] 요소를 deque의 끝으로 이동합니다. 다시, 회전이 올바르게 수행되는지 확인하기 위해 deque를 인쇄합니다.

 

요약하면 Python collections.deque의 rotate() 메서드는 deque의 요소를 지정된 단계 수만큼 오른쪽 또는 왼쪽으로 이동하는 데 사용됩니다. 회전 작업이 제자리에서 수행되고 원래 deque를 수정합니다.


감사합니다.

Do it! SQL을 찾아 주셔서 감사합니다. ♥ 댓글이 큰 힘이 됩니다.

 

728x90

댓글