후입선출의 자료구조 → 뒤에넣은걸 먼저 뺀다.
선입선출의 자료구조 → 뒤에 넣고, 앞에서 뺀다.
다른 모듈도 있지만, deque가 훨씬 빠르기 때문에
파이썬에서는 deque를 사용해서 스택과 큐를 구현하자!
deque
를 알아보자deque로 구현하는 스택
append()
pop()
from collections import deque
stack = deque()
stack.append(1)
stack.append(2)
stack.append(3)
stack.append(4)
print(stack.pop()) #4 3 2 1
print(stack.pop())
print(stack.pop())
print(stack.pop())
deque로 구현하는 큐
append()
popleft()
que = deque()
que.append(1)
que.append(2)
que.append(3)
que.append(4)
print(que.popleft()) # 1 2 3 4
print(que.popleft())
print(que.popleft())
print(que.popleft())
🧑🎓 deque
를 이해해보자
from collections import deque
dq = deque([4,5,6])
dq.append(7)
dq.appendleft(3)
print(str(dq) + " #pop 연산 시작")
print(dq.pop())
print(dq.popleft())
print(str(dq) + " #pop 연산 끝")
dq.extend([7,8,9])
print(dq)
dq.extendleft([3,2,1]) # 요소하나하나를 추가한다.
print(dq)
dq.insert(4,5)
print(dq)
dq.remove(5)
print(dq)
dq.remove(5)
print(dq)
dq.reverse()
print(dq)
print(dq.index(9)) #0
# print(dq.index(222)) #ValueError
print(dq.count(0)) #0
print(dq.count(1)) #1
print(len(dq)) #8
print(dq)
dq.rotate(3)
print(dq)
# dq.pop() #IndexError:
# dq.popleft() #IndexError:
# dq.remove(4) #ValueError
append()
: 오른쪽 끝에 항목 추가appendleft()
: 왼쪽 끝에 항목 추가pop()
: 오른쪽 끝 항목 출력 & 삭제 ➡️ #IndexError:
popleft()
: 왼쪽 끝 항목 출력 & 삭제 ➡️ #IndexError:
extend()
: 오른쪽으로 확장extendleft()
: 왼쪽으로 확장insert()
: 해당 인덱스에 추가remove()
: 해당 값을 왼쪽부터 삭제 ➡️ #ValueError
reverse()
: 값 반전rotate()
: 값이 뒤로 이동 #[9, 8, 7, 6, 4, 3, 2, 1]
dq.rotate(-1) #[9, 8, 7, 6, 4, 3, 2, 1]
dq.rotate(2) #deque([1, 9, 8, 7, 6, 4, 3, 2])
index()
: 해당 값의 인덱스 출력 없으면 ➡️ #ValueError
print
는 전체로 나온다.