deque 사용하기 [python]

eunbb·2024년 8월 22일

파이썬

목록 보기
1/1
post-thumbnail

collections 라이브러리

collections 라이브러리는 유용한 자료구조를 제공하는 표준 라이브러리 입니다.
표준 라이브러리는 특정한 프로그래밍 언어에서 자주 사용되는 표준 소스코드를 미리 구현해 놓은 라이브러리 입니다. 대표적으로 deque, Counter 클래스가 있습니다.

deque

deque 를 사용하면 "스택과 큐의 기능을 한번에" 사용할 수 있습니다. 한마디로 deque 는 양쪽 끝 모두에 출입구를 가지고 있습니다.


임포트 & 선언하기

deque를 사용하기 위해서는 deque 라는 이름의 라이브러리를 임포트 해주어야 합니다.

from collections import deque

dq = deque('love')
print(dq)

#출력값: deque(['l','o','v','e'])

자료형에 따른 저장 방식

문자열: 한글자 한글자가 각각의 원소로 저장
리스트: 각각의 요소로 분리, 내부에 문자열이 있는 경우 한개의 요소로 저장
숫자: 오류 (숫자를 넣고 싶다면 문자열로 바꾸어서 넣어야 함)


요소 추가하기

append() & appendleft()

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 왼쪽에 추가한다.

insert()

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부터 시작합니다.

extend()

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() 와 extend() 의 차이

#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 에 추가한다.


제거하기

pop() & popleft()

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한다.

remove()

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'])

잘못된 내용 있을 경우 알려주시면 수정하도록 하겠습니다! 읽어주셔서 감사합니다:)
profile
부산소프트웨어 마이스터 고등학교 4기 학생입니다!

0개의 댓글