collections 라이브러리는 유용한 자료구조를 제공하는 표준 라이브러리 입니다.
표준 라이브러리는 특정한 프로그래밍 언어에서 자주 사용되는 표준 소스코드를 미리 구현해 놓은 라이브러리 입니다. 대표적으로 deque, Counter 클래스가 있습니다.
deque 를 사용하면 "스택과 큐의 기능을 한번에" 사용할 수 있습니다. 한마디로 deque 는 양쪽 끝 모두에 출입구를 가지고 있습니다.
deque를 사용하기 위해서는 deque 라는 이름의 라이브러리를 임포트 해주어야 합니다.
from collections import deque
dq = deque('love')
print(dq)
#출력값: deque(['l','o','v','e'])
문자열: 한글자 한글자가 각각의 원소로 저장
리스트: 각각의 요소로 분리, 내부에 문자열이 있는 경우 한개의 요소로 저장
숫자: 오류 (숫자를 넣고 싶다면 문자열로 바꾸어서 넣어야 함)
dq = deque('love')
#append()
dq.append('u')
print(dq)
#출력값: deque(['i','l','o','v','e','u'])
#appendleft()
dq.appendleft('i')
print(dq)
#출력값: deque(['i','l','o','v','e'])
append(n): n을 deque 오른쪽에 추가한다.
appendleft(n): n을 deque 왼쪽에 추가한다.
dq = deque('love')
#삽입하기
dq.insert(0, 'i') #0번째 항목에 i 추가
print(dq)
#출력값: deque(['i','l','o','v','e'])
dq.insert(100, 'u') #100번째 항목(없으면 제일 끝에)에 u 추가
print(dq)
#출력값: deque(['k','l','o','n','e','u'])
insert(idx, n): n을 deque의 idx 번째에 추가합니다.
배열과 마찬가지로 deque 인덱스 번호는 0부터 시작합니다.
dq = deque('love')
#extend()
dq.extend('you')
print(dq)
#출력값: deque(['l','o','v','e','y','o','u'])
#extendleft()
dq.extendleft('i')
print(dq)
#출력값: deque(['i','l','o','v','e','y','o','u'])
extend(n): deque의 가장 오른쪽에 n을 추가한다.
extendleft(n): deque의 가장 왼쪽에 n을 추가한다.
#append()
dq1 = deque('love')
dq1.append('you')
print(dq1)
#출력값: deque(['l', 'o', 'v', 'e', 'you'])
#extend()
dq2 = deque('love')
dq2.extend('you')
print(dq2)
#출력값: deque(['l', 'o', 'v', 'e', 'y', 'o', 'u'])
위와 같이 append(str) 은 str 을 그대로 deque 에 추가하지만 extend(str) 은 문자열의 글자 하나하나를 deque 에 추가한다.
dq = deque('iloveu')
#pop()
dq.pop()
print(dq)
#출력값: deque(['i','l','o','v','e'])
#popleft()
dq.popleft()
print(dq)
#출력값: deque(['l','o','v','e'])
pop(): 가장 오른쪽 요소를 pop한다.
popleft(): 가장 왼쪽 요소를 pop한다.
dq = deque('banana')
#remove()
dq.remove('n') #같은 항목이 있으면 왼쪽부터
print(dq)
#출력값: deque(['b', 'a', 'a', 'n', 'a'])
dq.remove('n')
print(dq)
#출력값: deque(['b', 'a', 'a', 'a'])
remove(n): deque 에서 n 요소를 제거 (같은 항목이 있으면 가장 왼쪽의 항목을 제거)
dq = deque('lone')
dq[2] = 'v'
print(dq)
#출력값: deque(['l', 'o', 'v', 'e'])
deque[idx] = n
deque 에서 idx 위치의 요소를 n 으로 수정한다.
dq.reverse()
print(dq)
#출력값: deque(['e','v','o','l'])