티스토리 뷰
활용도 높은 Python 컬렉션: deque와 Counter 심층 활용
Python은 다양한 데이터 구조를 제공하며, 그 중에서도 deque와 Counter는 특히 활용도가 높은 컬렉션입니다. 본 글에서는 이 두 컬렉션의 기본 개념부터 고급 활용법까지 자세히 설명하고, 초보자들도 쉽게 이해할 수 있도록 안내하겠습니다.
Deque 이해하기
Deque란 무엇인가?
deque는 "double-ended queue"의 약자로, 양쪽 끝에서 데이터를 추가하거나 제거할 수 있는 데이터 구조입니다. 이는 리스트(list)를 이용하여 구현된 데이터 구조와는 달리, 양방향에서의 빠른 접근을 지원합니다. deque는 Python의 collections 모듈에 포함되어 있으며, 리스트보다 성능 면에서 유리합니다.
Deque의 주요 특징
- 양방향성: 앞뒤 어느 쪽에서든 요소를 추가하거나 제거할 수 있습니다.
- 빠른 성능: 리스트와 비교했을 때 삽입과 삭제의 성능이 우수합니다.
- 안전성: 스레드 안전성을 제공하지만, 필요에 따라 추가적인 동기화 메커니즘이 필요할 수 있습니다.
Deque 사용법
Deque 생성하기
deque를 사용하기 위해서는 collections 모듈에서 임포트해야 합니다. 다음은 deque의 기본 생성법입니다.
from collections import deque
my_deque = deque()
Deque에 요소 추가하기
deque에 요소를 추가하는 방법은 다음과 같습니다.
- append(item): 오른쪽 끝에 요소를 추가합니다.
- appendleft(item): 왼쪽 끝에 요소를 추가합니다.
아래는 deque에 요소를 추가하는 모습입니다.
my_deque.append(1)
my_deque.appendleft(0)
Deque에서 요소 제거하기
deque에서 요소를 제거하는 방법은 다음과 같습니다.
- pop(): 오른쪽 끝에서 요소를 제거합니다.
- popleft(): 왼쪽 끝에서 요소를 제거합니다.
예를 들어, deque에서 요소를 제거하는 간단한 코드 샘플은 다음과 같습니다.
removedelement = mydeque.pop()
leftremoved = mydeque.popleft()
Deque의 자주 사용하는 메서드
- extend(iterable): iterable의 요소를 오른쪽에 추가합니다.
- extendleft(iterable): iterable의 요소를 왼쪽에 추가합니다. (반대 순서로 추가됨)
- rotate(n): n 만큼 deque의 요소를 회전시킵니다.
- clear(): 모든 요소를 제거합니다.
다음은 이러한 메서드를 활용하는 예제입니다.
my_deque.extend([2, 3, 4])
my_deque.extendleft([-1, -2])
my_deque.rotate(1)
Counter 이해하기
Counter란 무엇인가?
Counter는 해시맵의 서브클래스로, 해시맵처럼 키와 값의 쌍으로 데이터를 저장하지만, 값은 갯수를 나타냅니다. 즉, 주어진 요소가 전체 데이터에서 얼마나 많이 발생하는지를 계산하는 데 유용합니다.
Counter의 주요 특징
- 빈도 분석: 특정 요소의 출현 빈도를 쉽게 계산할 수 있습니다.
- 자동 초기화: 없는 키를 사용하면 기본값 0으로 초기화됩니다.
Counter 사용법
Counter 생성하기
Counter를 사용하기 위해서는 collections 모듈에서 임포트해야 합니다. 다음은 기본 생성법입니다.
from collections import Counter
my_counter = Counter()
Counter에 요소 추가하기
Counter에 요소를 추가하는 방법은 다음과 같습니다.
- update(iterable): iterable을 통해 Counter에 새로운 요소를 추가합니다.
- subtract(iterable): iterable을 통해 Counter의 값을 감소시킵니다.
아래는 Counter에 요소를 추가하는 모습입니다.
my_counter.update(['a', 'b', 'a'])
Counter에서 요소 횟수 확인하기
Counter에서 특정 요소가 몇 번 발생했는지는 다음과 같이 확인할 수 있습니다.
counta = mycounter['a']
countb = mycounter['b']
Counter의 다른 유용한 메서드
- most_common(n): 가장 많이 발생한 n개의 요소와 그 카운트를 반환합니다.
- elements(): Counter에 있는 모든 요소를 반복합니다.
다음은 most_common 메서드의 사용 예시입니다.
topelements = mycounter.most_common(2)
Deque와 Counter의 결합 활용
활용 사례 제시
Deque와 Counter는 다양한 상황에서 함께 활용될 수 있습니다. 예를 들어, 데이터의 흐름을 관리하면서 동시에 발생 횟수를 측정하는 시스템에서는 이 두 컬렉션이 큰 도움이 됩니다.
예시 코드: 텍스트 분석
아래는 텍스트에서 단어를 분석하고, 단어의 출현 빈도를 구하는 예제입니다.
from collections import deque, Counter
text = "python python java java java"
words = text.split()
word_counter = Counter(words)
worddeque = deque(wordcounter.most_common())
while word_deque:
word, count = word_deque.popleft()
print(f"{word}: {count}회 출현")
결론
이번 글에서는 Python의 두 가지 유용한 컬렉션인 deque와 Counter에 대해 알아보았습니다. 각각의 기능과 쓰임새를 이해함으로써, 더욱 효과적으로 Python을 활용할 수 있는 기반이 되기를 바랍니다. 초보자 여러분도 이 두 컬렉션을 일상적인 데이터 처리와 분석에 활용해 보시기 바랍니다.
더 깊은 이해와 응용을 위해 다양한 프로젝트와 실습에 도전하시길 권장합니다.





