728x90
반응형
리스트 메소드 중에 pop()은 Stack이나 Queue에서처럼 데이터를 가져오면서 삭제가 되는 기능을 합니다.
이를 이용해 Stack/Queue 처럼 활용할 수 있습니다.
Stack과 Queue는 아래의 포스팅을 참고해 주세요.
https://geuninote.tistory.com/70
1. pop()
pop()은 기본적으로 인자 없이 사용할 경우 가장 최근의 데이터를 꺼내옵니다.
필요한 경우 pop(n) 형태로 리스트의 특정 인덱스에 접근하여 데이터를 가져오는 게 가능합니다.
testList = [0, 1, 2, 3, 4, 5, 6, 7]
pop1 = testList.pop()
print(pop1, ' / ', testList) # 7 / [0, 1, 2, 3, 4, 5, 6]
pop2 = testList.pop(3)
print(pop2, ' / ', testList) # 3 / [0, 1, 2, 4, 5, 6]
pop3 = testList.pop(0)
print(pop3, ' / ', testList) # 0 / [1, 2, 4, 5, 6]
2. Stack, Queue 만들기
개념적으로 봤을 때 스택과 큐는 데이터를 꺼내가는 위치만 다르다고 할 수 있습니다.
그렇기 때문에 append()로 데이터를 추가하고 pop()으로 꺼내는 방식으로 리스트를 사용하면
스택과 큐로 사용할 수 있습니다.
간단하게 그림으로 나타내면 위와 같습니다.
append() : 데이터 추가
pop() : 가장 마지막 데이터를 꺼냄
pop(0) : 가장 오래된(0번째) 데이터를 꺼냄
이를 함수화하여 코드로 간단하게 구현하면 아래와 같습니다.
# Stack
def dataPop(stack:list):
try:
data = stack.pop()
except:
data = None
return data
def dataPush(stack:list, data):
stack.append(data)
# Queue
def dataDequeue(queue:list):
try:
data = queue.pop(0)
except:
data = None
return data
def dataEnqueue(queue:list, data):
queue.append(data)
# Stack Example
stackList = [0, 1, 2, 3, 4]
stackData = dataPop(stackList)
dataPush(stackList, 'new stack data')
print(stackData, ' / ', stackList) # 4 / [0, 1, 2, 3, 'new stack data']
# Queue Example
queueList = [0, 1, 2, 3, 4]
queueData = dataDequeue(queueList)
dataEnqueue(queueList, 'new queue data')
print(queueData, ' / ', queueList) # 0 / [1, 2, 3, 4, 'new queue data']
pop() 할 때 리스트에 데이터가 없으면 IndexError가 발생합니다.
그래서 pop할 때는 try, except로 예외 처리를 해주어야 합니다.
위 예제는 아주 기초적인 내용만 담았기 때문에 개인의 코딩 스타일에 맞게 구체화해가면 될 것 같습니다.
728x90
반응형
'[R&D] 프로그래밍 > Python' 카테고리의 다른 글
[Python] 딕셔너리 (dict) method 활용 (feat. 반복문) (0) | 2022.08.05 |
---|---|
[Python] 딕셔너리 (dict) 기본 사용 방법 (0) | 2022.08.04 |
[Python] 파이썬 자료형 정리 (0) | 2022.07.15 |
[Python] 슬라이싱 (slicing) 개념 및 사용 방법 (2) | 2022.07.06 |
[Python] 리스트(list) method - copy, count, index (0) | 2022.07.03 |
[Python] 리스트(list) 정렬하기 (0) | 2022.07.02 |
[Python] 리스트(list) 사용 방법 (0) | 2022.07.01 |
댓글