스택이란?
스택(Stack)은 Last In First Out—LIFO의 구조를 가지는 자료구조(Data Structure)를 일컫는다.
선입선출인 큐(Queue)와 비교된다. 구현은 큐나 링크드 리스트와 같은 다른 자료형에 비해 쉬운 편이다.
스택에서 데이터를 넣는 것을 push , 데이터를 꺼내는 것을 poppop이라고 합니다.
그리고 push와 pop을 하는 위치를 top이라고 하고, 스택의 가장 아랫부분을 bottom이라고 합니다.
스택의 예로는 일상생활에서 책을 쌓고, 책을 꺼내는 것과 브라우저에서 웹 페이지 클릭 후 뒤로 가기 버튼을 누르는 것과 같습니다.
Python에서의 동작
파이썬에서는 List를 이용하여 스택을 구현합니다.
리스트 자료 형은 몇 가지 메서드들을 더 갖고 있습니다. 이것들이 리스트 객체의 모든 메서드 들입니다:
list.append(x)
리스트의 끝에 항목을 더합니다. a[len(a):] = [x] 와 동등합니다.
list.extend(iterable)
리스트의 끝에 이터러블의 모든 항목을 덧붙여서 확장합니다. a[len(a):] = iterable 와 동등합니다.
list.insert(i, x)
주어진 위치에 항목을 삽입합니다. 첫 번째 인자는 삽입되는 요소가 갖게 될 인덱스입니다. 그래서 a.insert(0, x) 는 리스트의 처음에 삽입하고, a.insert(len(a), x) 는 a.append(x) 와 동등합니다.
list.remove(x)
리스트에서 값이 x 와 같은 첫 번째 항목을 삭제합니다. 그런 항목이 없으면 ValueError를 일으킵니다.
list.pop([i])
리스트에서 주어진 위치에 있는 항목을 삭제하고, 그 항목을 돌려줍니다. 인덱스를 지정하지 않으면, a.pop() 은 리스트의 마지막 항목을 삭제하고 돌려줍니다. (메서드 시그니처에서 i 를 둘러싼 대괄호는 매개변수가 선택적임을 나타냅니다. 그 위치에 대괄호를 입력해야 한다는 뜻이 아닙니다. 이 표기법은 파이썬 라이브러리 레퍼런스에서 지주 등장합니다.)
list.clear()
리스트의 모든 항목을 삭제합니다. del a[:] 와 동등합니다.
list.index(x[, start[, end]])
리스트에 있는 항목 중 값이 x 와 같은 첫 번째 것의 0부터 시작하는 인덱스를 돌려줍니다. 그런 항목이 없으면 ValueError 를 일으킵니다.
선택적인 인자 start 와 end 는 슬라이스 표기법처럼 해석되고, 검색을 리스트의 특별한 서브 시퀀스로 제한하는 데 사용됩니다. 돌려주는 인덱스는 start 인자가 아니라 전체 시퀀스의 시작을 기준으로 합니다.
list.count(x)
리스트에서 x 가 등장하는 횟수를 돌려줍니다.
list.sort(*, key=None, reverse=False)
리스트의 항목들을 제자리에서 정렬합니다 (인자들은 정렬 커스터마이제이션에 사용될 수 있습니다. 설명은 sorted() 를 보세요).
list.reverse()
리스트의 요소들을 제자리에서 뒤집습니다.
list.copy()
리스트의 얕은 사본을 돌려줍니다. a[:] 와 동등합니다.
'Language > Python' 카테고리의 다른 글
데이터 엔지니어(네번째 이야기) (0) | 2021.09.16 |
---|---|
데이터 엔지니어(세번째 이야기) (0) | 2021.09.16 |
데이터 엔지니어(두번째 이야기) (0) | 2021.09.06 |
데이터 엔지니어(첫번째 이야기) (0) | 2021.09.02 |
[통합 개발 환경 IDE] 파이참(Pycharm) 다운로드 및 설치 (0) | 2021.01.21 |
댓글