Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

파이썬의 데크

<시간/>

Deque는 기본적으로 왼쪽에서 오른쪽으로 초기화되는 스택 및 큐 구조의 일반화입니다. 목록 개체를 사용하여 데크를 생성합니다. 팝핑 및 추가를 위한 O(1) 시간 복잡성을 제공합니다.

Deque는 컬렉션에 있는 표준 라이브러리 클래스입니다. 모듈.

처음에 그것을 사용하려면 컬렉션 표준 라이브러리 모듈을 가져와야 합니다.

컬렉션 가져오기

이 섹션에서는 Deque 클래스의 일부 기능을 볼 것입니다.

Deque의 추가 기능

두 가지 다른 유형의 추가가 있습니다. append() 메서드는 큐의 오른쪽 끝에 요소를 추가하는 데 사용하고 appendleft() 메서드는 큐의 왼쪽에 요소를 추가하는 데 사용합니다.

예시 코드

컬렉션을 col으로 가져오기#첫 번째 my_deque =col.deque('124dfre')의 대기열에 일부 요소 삽입 print('Dequeue:' + str(my_deque)) # 오른쪽에 x 삽입, 왼쪽에 B 삽입 my_deque.append( 'x') my_deque.appendleft('B') print('추가 후 대기열에서 빼기:' + str(my_deque))

출력

Dequeue:deque(['1', '2', '4', 'd', 'f', 'r', 'e']) 추가 후 Dequeue:deque(['B', '1 ', '2', '4', 'd', 'f', 'r', 'e', ​​'x'])

Deque의 Popping 기능

추가와 마찬가지로 두 가지 유형의 팝 함수가 있습니다. pop() 메서드는 큐에서 가장 오른쪽 요소를 제거하고 반환하는 데 사용되며 popleft() 메서드는 큐에서 가장 왼쪽 요소를 제거하고 반환하는 데 사용됩니다.

예시 코드

컬렉션을 col로 가져오기#첫 번째 대기열에 일부 요소 삽입my_deque =col.deque('124dfre') print('Dequeue:' + str(my_deque)) #오른쪽 및 왼쪽에서 항목 삭제 item =my_deque.pop( ) print('팝된 항목:' + str(item)) item =my_deque.popleft() print('팝된 항목:' + str(item))print('팝 작업 후 대기열에서 빼기:' + str(my_deque)) 

출력

Dequeue:deque(['1', '2', '4', 'd', 'f', 'r', 'e'])팝된 항목:e팝된 항목:1팝 작업 후 대기열에서 제거:deque( ['2', '4', 'd', 'f', 'r'])

Deque의 아이템 관련 기능

Deque의 일부 함수는 항목과 관련된 정보를 가져오는 데 사용됩니다. index(), count() 등과 같은 몇 가지 함수가 있습니다. index 메서드는 처음 나타나는 요소의 인덱스를 가져오는 데 사용됩니다. 요소와 함께 인수가 전달되지 않으면 전체 목록을 선택하고 특정 제한이 지정되면 해당 제한의 인덱스를 확인합니다. 반면에 count() 메서드는 Deque에서 항목의 빈도를 계산합니다.

예시 코드

컬렉션을 col으로 가져오기#첫 번째에 있는 큐에 일부 요소를 삽입합니다. =col.deque('AABCDDEFD') print('Dequeue:' + str(my_deque)) #D의 인덱스 찾기 print('D의 인덱스:' + str(my_deque.index('D')))print('범위 5에서 8 사이의 D 인덱스는 다음과 같습니다. ' + str(my_deque.index('D', 5, 8)))# 발생 횟수 print('A 발생 횟수:' + str(my_deque.count('A')))print('D 발생 횟수:' + str(my_deque.count('D')))

출력

Dequeue:deque(['A', 'A', 'B', 'C', 'D', 'D', 'E', 'F', 'D'])D:4Index의 인덱스 범위 5에서 8까지의 D의 발생은 다음과 같습니다. 5A의 발생:2D의 발생:3

Deque의 insert() 및 remove() 함수

요소를 각각 삽입하고 삭제하기 위해 Deque에서 추가 및 팝 기능을 이미 보았습니다. 삽입 및 삭제와 관련된 또 다른 두 가지 방법이 있습니다. insert() 메서드는 숫자를 삽입하는 데 사용됩니다. 이 경우 삽입을 위한 인덱스를 제공할 수 있습니다. 따라서 지정된 위치에 항목을 삽입할 수 있습니다. 그리고 remove() 메소드는 요소의 첫 번째 항목을 제거하는 데 사용됩니다.

예시 코드

컬렉션을 col로 가져오기#첫 번째 위치의 큐에 일부 요소 삽입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))#Dmy_deque.remove('D')print(' 제거 후 큐에서 빼기:' + str(my_deque))

출력

Dequeue:deque(['A', 'A', 'B', 'C', 'D', 'D', 'E', 'F', 'D']) 삽입 후 Dequeue:deque (['A', 'A', 'B', 'C', 'D', 'G', 'D', 'H', 'E', 'F', 'D'])제거 후 큐에서 빼기 :deque(['A', 'A', 'B', 'C', 'G', 'D', 'H', 'E', 'F', 'D'])

Deque의 기능 확장

확장 함수는 Deque에 여러 요소를 추가하는 데 사용됩니다. 목록, 튜플과 같은 컬렉션을 사용하여 여러 값을 제공할 수 있습니다. 확장 기능에는 두 가지 유형이 있습니다. 확장() 메서드는 오른쪽에 요소를 추가하는 데 사용되며 반복적인 append() 함수와 유사합니다. 그리고 왼쪽에 요소를 추가하기 위해 extendleft() 메소드를 사용하는데, 반복적인 appendleft() 함수와 유사합니다.

예시 코드

컬렉션을 col로 가져오기#첫 번째의 대기열에 일부 요소 삽입my_deque =col.deque('AABCDDEFD')print('Dequeue:' + str(my_deque))#1, 3, 5, 7을 추가하여 확장 오른쪽 및 x, y, z를 왼쪽으로 my_deque.extend([1, 3, 5, 7])my_deque.extendleft(['x', 'y', 'z'])print('확장 후 대기열 제거:' + 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])

Deque의 반전 및 회전 기능

reverse() 메서드를 사용하여 dequeuer의 순서를 바꿀 수 있습니다. 회전()이라는 또 다른 방법이 있습니다. 회전 방법을 사용하여 데크는 인수로 지정된 숫자로 회전할 수 있습니다. 인수가 양수이면 오른쪽으로 회전하고 음수이면 왼쪽으로 회전합니다.

예시 코드

컬렉션을 col으로 가져오기#첫 번째에 있는 대기열에 일부 요소를 삽입합니다. =col.deque('AABCDDEFD')print('Dequeue:' + str(my_deque))my_deque.reverse()print('Deque after Reverse:' + str(my_deque))#오른쪽으로 회전, 3개의 요소my_deque.rotate(3)print('회전 후 데크:' + str(my_deque))

출력

Dequeue:deque(['A', 'A', 'B', 'C', 'D', 'D', 'E', 'F', 'D']) Reversing 후 Deque:deque (['D', 'F', 'E', 'D', 'D', 'C', 'B', 'A', 'A'])회전 후 Deque:deque(['B', 'A', 'A', 'D', 'F', 'E', 'D', 'D', 'C'])