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

Python 스택:방법 가이드

스택은 광범위하게 사용되는 중요한 데이터 구조입니다.

프로그래밍에서 스택을 사용하면 LIFO(후입 선출) 순서로 데이터를 저장할 수 있습니다. 이것은 스택에 저장된 마지막 항목이 처리될 첫 번째 항목임을 의미합니다.

그러나 Python에서 스택을 생성하는 방법은 무엇입니까? 이것이 이 가이드에서 우리가 대답할 질문입니다. 이 가이드를 읽으면 Python에서 스택을 만들고 작업하는 데 전문가가 될 것입니다.

파이썬 스택

스택은 LIFO(후입선출) 순서로 데이터를 저장합니다.

이 순서가 어떻게 작동하는지 이해하는 데 도움이 되도록 접시 더미를 고려하십시오. 청소할 접시 더미가 있는 경우 가장 먼저 이동할 접시가 맨 위에 있습니다. 그런 다음 플레이트를 이동하면 스택에서 아래쪽에 있는 플레이트에 액세스할 수 있습니다.

스택은 파이썬에서 큐의 반대입니다. 대기열은 가장 최근에 추가된 항목을 제거하는 반면(선입 선출 구조를 사용하기 때문에) 스택은 가장 최근에 추가된 항목을 제거합니다(후입 선출 구조를 사용하기 때문에).

스택은 일반적으로 푸시와 팝의 두 가지 작업을 지원합니다. 푸시를 사용하면 스택 맨 위에 항목을 추가할 수 있고 팝핑을 사용하면 스택 맨 위에 있는 항목을 제거할 수 있습니다.

Python에서 스택을 생성하는 데 사용할 수 있는 두 가지 주요 접근 방식은 내장 목록을 사용하는 방법과 collections.deque()를 사용하는 방법입니다. 수업. 이러한 각 접근 방식이 어떻게 작동하는지 분석해 보겠습니다.

참가자의 81%는 부트캠프에 참석한 후 기술 직업 전망에 대해 더 자신감을 느꼈다고 말했습니다. 지금 부트캠프에 참여하십시오.

부트캠프 졸업생은 부트캠프 시작부터 첫 직장을 찾는 데까지 6개월도 채 걸리지 않았습니다.

Python 내장 목록

내장된 목록 데이터 유형을 사용하면 Python에서 스택을 생성할 수 있습니다.

Python 목록은 배열로 구현되므로 항목을 쉽게 추가하고 제거할 수 있습니다. 또한 목록에 값을 삽입하는 순서가 유지되므로 목록의 첫 번째 항목과 마지막 항목을 쉽게 제거할 수 있습니다.

클래스의 숙제 목록을 저장하는 스택을 생성한다고 가정합니다. 교사는 이러한 과제를 더미에 나타나는 순서대로 채점하기를 원합니다(따라서 먼저 제출한 과제는 스택 맨 아래에 있고 마지막에 제출한 과제는 스택 맨 위에 있음).

스택에 항목 추가

스택에 항목을 추가하려면 append()를 사용할 수 있습니다. 방법. 다음 코드를 사용하여 숙제 스택을 만들 수 있습니다.

assignments =[]assignments.append("Hannah")assignments.append("Benny")assignments.append("Gordon")print(assignments)

코드 반환:

['한나','베니','고든']

코드에서 먼저 assignments라는 목록을 선언합니다. . 그런 다음 append()를 사용합니다. 제출된 과제 목록에 세 개의 이름을 추가하는 방법. 우리가 추가하는 이름은 순서대로 Hannah, Benny, Gordon입니다. Gordon이 마지막으로 과제를 제출했기 때문에 목록의 마지막 위치에 나타납니다.

스택에서 항목 제거

Gordon의 과제를 채점했고 어떤 과제가 다음 채점인지 알고 싶다고 가정합니다. 여기에는 스택 맨 위에 있는 항목을 제거하는 작업이 포함됩니다.

스택에서 항목을 제거하려면 pop()을 사용할 수 있습니다. 방법. 스택에서 맨 위 항목을 제거하는 데 사용할 수 있는 코드는 다음과 같습니다.

assignments =[]assignments.append("Hannah")assignments.append("Benny")assignments.append("Gordon")assignments.pop()print(assignments)

코드 반환:

['한나','베니']

Gordon의 이름은 pop()을 사용하여 스택에서 제거되었습니다. , 그래서 우리 스택에는 이제 Hannah와 Benny라는 두 개의 이름만 포함됩니다.

collections.deque 클래스

컬렉션 라이브러리의 deque 클래스를 사용하면 양방향 대기열을 만들 수 있습니다.

deque 객체는 이중 연결 목록으로 구현됩니다. 즉, 요소를 삽입하고 삭제할 때 강력하고 일관된 성능을 보입니다. 또한 컬렉션 라이브러리는 Python 표준 라이브러리의 일부이므로 외부 라이브러리를 다운로드하지 않고도 코드로 가져올 수 있습니다.

collections.deque로 작업하려면 클래스를 사용하려면 먼저 import 문을 사용하여 코드로 가져와야 합니다.

컬렉션에서 가져오기 데크

collections.deque 클래스가 어떻게 작동하는지 설명하기 위해 이전의 숙제 예제로 돌아가 보겠습니다.

데크 스택에 항목 추가

deque 스택에 항목을 추가하려면 append()를 사용할 수 있습니다. 방법. deque 클래스를 사용하여 숙제로 대기열을 생성한다고 가정합니다. 다음 코드를 사용하여 그렇게 할 수 있습니다.

컬렉션에서 가져오기 dequeassignments =deque()assignments.append("Hannah")assignments.append("Benny")assignments.append("Gordon")print(assignments)

코드 반환:

deque(['한나','베니','고든'])

코드를 분해해 보겠습니다. 먼저 컬렉션 ​​라이브러리에서 deque 클래스를 가져옵니다. 그런 다음 deque()를 사용하여 데크를 만듭니다. 변수 assignments에 할당합니다. .

다음으로 Hannah, Benny 및 Gordon이라는 세 가지 이름을 할당 데크에 추가합니다. 마지막으로 할당 대기열의 내용을 콘솔에 출력합니다.

이 예제에서 우리의 데이터는 스택 대신 deque로 저장된다는 것을 알 수 있습니다(결과가 deque() ). 이는 데이터가 여전히 스택처럼 작동함에도 불구하고 deque 구조를 사용하기 때문입니다.

데크 스택에서 항목 제거

deque 스택에서 항목을 제거하려면 pop()을 사용할 수 있습니다. 방법.

방금 Gordon과 Benny의 과제를 채점했다고 가정합니다. 스택에서 제거하려면 다음 코드를 사용할 수 있습니다.

컬렉션에서 가져오기 dequeassignments =deque()assignments.append("Hannah")assignments.append("Benny")assignments.append("Gordon")assignments.pop()assignments.pop()print(assignments) 

코드 반환:

데크(['한나'])

우리 코드에서는 먼저 세 개의 값을 가진 데크 스택을 만듭니다. 그런 다음 pop()을 실행합니다. 두 번 진술. pop() 문이 실행되면 스택 맨 위에 있는 항목이 제거됩니다. 이는 Gordon과 Benny 값이 스택에서 제거되고 Hannah가 스택에 유일한 항목으로 남게 됨을 의미합니다.

Python deque 클래스에 대해 자세히 알아보려면 Python 대기열 및 deque에 대한 자습서를 읽어보세요.

결론

스택을 사용하면 데이터를 후입선출 순서로 저장할 수 있습니다. Python에서 스택을 구현하는 방법에는 여러 가지가 있지만 가장 실용적인 두 가지 방법은 Python 내장 목록 구조를 사용하거나 collections.deque() 수업.

이 자습서에서는 예제를 참조하여 목록 및 collections.deque()를 사용하여 Python에서 스택을 만드는 방법을 설명했습니다. . 이제 전문 Python 개발자처럼 자신만의 스택을 만들 준비가 되었습니다!