파이썬의 스택과 큐, deque

코린이서현이·2024년 4월 6일
0

스택

후입선출의 자료구조 → 뒤에넣은걸 먼저 뺀다.

선입선출의 자료구조 → 뒤에 넣고, 앞에서 뺀다.

다른 모듈도 있지만, 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는 전체로 나온다.
profile
24년도까지 프로젝트 두개를 마치고 25년에는 개발 팀장을 할 수 있는 실력이 되자!

0개의 댓글