English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Deque는基本上는 스택과 큐 구조의 일반화로, 왼쪽에서 오른쪽으로 초기화됩니다. 그는 list 객체를 사용하여 双端队列를 생성하고,弹出 및 추가에 대해 O(1)시간 복잡도.
Dequeis는 표준 라이브러리 클래스로,collections모듈.
먼저 사용하기 위해, 그를 수집 표준 라이브러리 모듈에 입력해야 합니다.
import collections
본 절에서는 Deque 클래스의 일부 기능을 볼 수 있습니다.
두 가지不同类型的附加 exist. 이append()
메서드는 큐의 오른쪽에 요소를 추가하는 데 사용됩니다。appendleft()
메서드는 큐의 왼쪽에 요소를 추가하는 데 사용됩니다。
import collections as col #Insert some elements into the queue at first my_deque = col.deque('124dfre') print('Dequeue: ') + str(my_deque) #insert x at right and B at left my_deque.append('x') my_deque.appendleft('B') print('Dequeue after appending: ' + str(my_deque)
출력 결과
Dequeue: deque(['1', '2', '4', 'd', 'f', 'r', 'e']) Dequeue after appending: deque(['B', '1', '2', '4', 'd', 'f', 'r', 'e', 'x'])
추가와 마찬가지로, 두 가지不同类型的弹出函数 exist. 이pop()
메서드는 큐에서 가장 오른쪽의 요소를 제거하고 반환하는 데 사용됩니다.popleft()
메서드는 큐에서 가장 왼쪽의 요소를 제거하고 반환하는 데 사용됩니다。
import collections as col #Insert some elements into the queue at first my_deque = col.deque('124dfre') print('Dequeue: ') + str(my_deque) #delete item from right and left item = my_deque.pop() print('Popped Item: ' + str(item)) item = my_deque.popleft() print('Popped Item: ' + str(item)) print('Dequeue after pop operations: ' + str(my_deque)
출력 결과
Dequeue: deque(['1', '2', '4', 'd', 'f', 'r', 'e']) Popped Item: e Popped Item: 1 Dequeue after pop operations: deque(['2', '4', 'd', 'f', 'r'])
Deque의 일부 기능은 프로젝트와 관련된 정보를 얻기 위해 사용됩니다. 예를 들어,index()
,count()
等等。index 메서드는 요소가 처음으로 나타나는 인덱스를 얻는 데 사용됩니다. 요소에 매개변수가 전달되지 않으면 전체 목록을 선택하고, 특정 제한을 지정하면 해당 제한 내의 인덱스를 확인합니다. 또한, 이count()
메서드는 데크에서 프로젝트의 빈도를 계산합니다.
import collections as col #Insert some elements into the queue at first my_deque = col.deque('AABCDDEFD') print('Dequeue: ') + str(my_deque) print('D의 인덱스:', + str(my_deque.index('D'))) print('D의 범위 내 인덱스 5 to 8 is: ' + str(my_deque.index('D', 5, 8)) print('A의 발견:', + print('D의 발견:', + str(my_deque.count('D')))
출력 결과
Dequeue: deque(['A', 'A', 'B', 'C', 'D', 'D', 'E', 'F', 'D']) D의 인덱스:4 D의 범위 내 인덱스 5 to 8 는: 5 A의 발견 2 D의 발견 3
insert()
와remove()
메서드append와 pop 함수를 이미 데크에서 본 것입니다. 각각 요소를 삽입하고 제거하는 데 사용됩니다. 또한 삽입과 제거와 관련된 두 가지 메서드가 있습니다.insert()
수자를 삽입하는 메서드입니다. 이 경우 삽입 인덱스를 제공할 수 있습니다. 따라서 지정된 위치에该项目를 삽입할 수 있습니다. 그리고remove()
요소의 첫 번째 발견을 삭제하는 메서드입니다.
import collections as col #Insert some elements into the queue at first my_deque = col.deque('AABCDDEFD') print('Dequeue: ') + str(my_deque) # G와 H를 지정된 위치에 삽입 5, 7 각각 my_deque.insert(5, 'G') my_deque.insert(7, 'H') print('추가 후 데크: ' + str(my_deque) # D 글자의 첫 번째 발견을 삭제 my_deque.remove('D') print('제거 후 데크: ' + str(my_deque)
출력 결과
Dequeue: deque(['A', 'A', 'B', 'C', 'D', 'D', 'E', 'F', 'D']) 추가 후 데크: deque(['A', 'A', 'B', 'C', 'D', 'G', 'D', 'H', 'E', 'F', 'D']) 제거 후 데크: deque(['A', 'A', 'B', 'C', 'G', 'D', 'H', 'E', 'F', 'D'])
다양한 요소를 데크에 추가하는 확장 기능입니다. 리스트, 튜플과 같은 셋을 사용하여 여러 값을 제공할 수 있습니다. 두 가지 확장 기능이 있습니다.extend()
메서드는 오른쪽에 요소를 추가하는 데 사용되며, 반복과 유사합니다.append()
메서드.extendleft()
메서드는 왼쪽에 요소를 추가하는 데 사용되며, 반복과 유사합니다.appendleft()
메서드.
import collections as col #Insert some elements into the queue at first my_deque = col.deque('AABCDDEFD') print('Dequeue: ') + str(my_deque) #Extend by adding 1, 3, 5, 7 to the right and x, y, z to the left my_deque.extend([1, 3, 5, 7] my_deque.extendleft(['x', 'y', 'z']) print('Dequeue after Extending:') + str(my_deque)
출력 결과
Dequeue: deque(['A', 'A', 'B', 'C', 'D', 'D', 'E', 'F', 'D']) Dequeue after Extending: deque(['z', 'y', 'x', 'A', 'A', 'B', 'C', 'D', 'D', 'E', 'F', 'D', 1, 3, 5, 7]
우리는 이를 사용할 수 있습니다.reverse()
메서드는 큐의 순서를 반전합니다. 또 다른 메서드도 있습니다.rotate()
。rotate 메서드를 사용하면, 양 끝 큐는 매개변수로 지정된 숫자로 회전할 수 있습니다. 매개변수가 음수면 왼쪽으로 회전하고, 양수면 오른쪽으로 회전합니다。
import collections as col #Insert some elements into the queue at first my_deque = col.deque('AABCDDEFD') print('Dequeue: ') + str(my_deque) my_deque.reverse() print('Deque after Reversing:') + str(my_deque) #rotate to the right, 3 elements my_deque.rotate(3) print('Deque after rotating:') + str(my_deque)
출력 결과
Dequeue: deque(['A', 'A', 'B', 'C', 'D', 'D', 'E', 'F', 'D']) Deque after Reversing:deque(['D', 'F', 'E', 'D', 'D', 'C', 'B', 'A', 'A']) Deque after rotating:deque(['B', 'A', 'A', 'D', 'F', 'E', 'D', 'D', 'C'])