파이썬 스택 예제

파이썬에 내장 된 또 다른 유용한 데이터 유형은 사전입니다 (매핑 유형 – dict 참조). 사전은 때때로 “연관 기억”또는 “연관 배열”로 다른 언어에서 찾을 수 있습니다. 다양한 숫자로 인덱싱되는 시퀀스와 달리 사전은 키로 인덱싱되며, 이 순서는 변경할 수 없는 형식일 수 있습니다. 문자열과 숫자는 항상 키가 될 수 있습니다. Tuples는 문자열, 숫자 또는 튜플만 포함하는 경우 키로 사용할 수 있습니다. 튜플에 직접 또는 간접적으로 가변 가능한 개체가 포함되어 있으면 키로 사용할 수 없습니다. 인덱스 할당, 슬라이스 할당 또는 append() 및 extend()와 같은 메서드를 사용하여 목록을 수정할 수 있으므로 목록을 키로 사용할 수 없습니다. 이 작업은 목록으로 인덱싱하는 것과 같은 여러 작업에 적합합니다. 파이썬은 그것을 찾기 위해 메모리에서 볼 위치를 정확히 알고로 myList [3]을 얻는 것은 빠릅니다. 이 메모리 레이아웃을 사용하면 목록에서 슬라이스가 잘 작동할 수도 있습니다. collections.deque는 링크 된 목록 구현의 성능 특성을 가진 Python의 표준 라이브러리에서 스택 데이터 구조를 찾고 있다면 훌륭한 선택입니다.

Python의 기본 제공 목록 유형은 분할 상환 O (1) 시간에 푸시 및 팝 작업을 지원하기 때문에 괜찮은 스택 데이터 구조를 만듭니다. 이러한 각 명령은 취소 스택에 저장되며 각 새 명령이 맨 위에 배치되는 것을 볼 수 있습니다. 스택으로 작업할 때 푸시라고 합니다. 이 질문에서 이미 다루어졌기 때문에 목록 구조에 대해서는 이야기하지 않을 것입니다. 대신 스택을 처리하기 위한 기본 방법을 언급합니다: 목록을 스택으로 사용할 때 중요한 성능 주의 사항은 다음과 같습니다. 이를 종종 LIFO라고 합니다. 이는 FIFO(선/선/First-Out) 방식으로 항목을 저장하는 큐와 는 대조적입니다. 팝 작업을 사용하여 스택 파이썬의 기본 제공 목록 데이터 구조의 상위 항목을 제거하고 반환할 수 있으며 스택 및 큐 작업을 모두 시뮬레이션하는 메서드와 함께 제공됩니다. 따라서 스택을 구현하려면 두 가지 간단한 작업이 필요합니다. 값을 반환하는 pop() 메서드와 다릅니다.

del 문은 목록에서 슬라이스를 제거하거나 전체 목록을 지우는 데 사용할 수도 있습니다(이전에 빈 목록을 슬라이스에 할당하여 수행함). 예를 들어, 이 방법은 인터페이스가 목록과 거의 비슷하게 작동합니다 (예를 들어 팝에서 동일한 동작). 함수 re.split은 더 강력하므로 구분 기호 대신 정규식을 제공할 수 있습니다.