Python/이론, 기초

[Python] deque 스택, 큐 라이브러리 사용하기

파송송 2023. 3. 31. 16:10
728x90

deque

스택은 후입선출, 큐는 선입선출의 특징을 가지고 있고 이는 deque를 이용하여 사용가능함


선언

from collections import  deque
a = [i for i in range(10)]
a = deque(a)
b = deque('hello python')
print(a, b)
deque([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) deque(['h', 'e', 'l', 'l', 'o', ' ', 'p', 'y', 't', 'h', 'o', 'n'])

pop()

스택은 후입선출이기 때문에 마지막에 들어있는 데이터가 출력됨

from collections import  deque
a = [i for i in range(10)]
a = deque(a)
b = deque('hello python')

print(a.pop(), b.pop())
9 n

popleft()

마지막에 들어있는 데이터가 아닌 처음에 들어간 데이터를 출력하기 위해 사용함

from collections import  deque
a = [i for i in range(10)]
a = deque(a)
b = deque('hello python')

print(a.popleft(), b.popleft())

append()

뒷부분에 데이터를 삽입하기 위해 사용함

from collections import  deque
a = [i for i in range(10)]
a = deque(a)
a.append(100)

print(a)
deque([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 100])

appendleft()

처음 부분에 데이터를 삽입하기 위해 사용함

from collections import  deque
a = [i for i in range(10)]
a = deque(a)
a.appendleft(100)

print(a)

expend()

오른쪽에 확장함

from collections import  deque
a = deque([i for i in range(10)])
b = deque([i for i in range(10, 20)])
a.extend(b)

print(a)
deque([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19])

expednleft()

왼쪽에 확장함(10 ~ 19로 확장되는 것이 아니라 19 ~ 10로 확장됨)

from collections import  deque
a = deque([i for i in range(10)])
b = deque([i for i in range(10, 20)])
a.extendleft(b)

print(a)
deque([19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

insert()

원하는 인덱스에 원소 넣기

from collections import  deque
a = deque([i for i in range(10)])
a.insert(0,'add')

print(a)
deque(['add', 0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

remove()

모든 원소를 삭제하는 것이 아는 제일 앞에 있는 원소를 삭제함

from collections import  deque
a = deque([i for i in range(10)])
a.insert(2,0)
print(a)

a.remove(0)
print(a)
deque([0, 1, 0, 2, 3, 4, 5, 6, 7, 8, 9])
deque([1, 0, 2, 3, 4, 5, 6, 7, 8, 9])

reverse()

from collections import  deque
a = deque([i for i in range(10)])
a.reverse()
print(a)
deque([9, 8, 7, 6, 5, 4, 3, 2, 1, 0])

rotate()

함수 안에 양수를 넣으면 오른쪽 회전, 음수를 넣으면 왼쪽 회전이고 수 만큼 rotate한다.

from collections import deque
test = [1, 2, 3, 4, 5, 6, 7, 8, 9]
test = deque(test)

test.rotate(3)
result = list(test)
print(result)
[7, 8, 9, 1, 2, 3, 4, 5, 6]

from collections import deque
test = [1, 2, 3, 4, 5, 6, 7, 8, 9]
test = deque(test)

test.rotate(-3)
result = list(test)
print(result)
[4, 5, 6, 7, 8, 9, 1, 2, 3]
728x90