반응형
파이썬의 collections 라이브러리는 유용한 자료구조를 제공하는 표준 라이브러리입니다. 그 중 많이 사용되는 deque와 Counter에 대해 알아보겠습니다.
파이썬에서 큐를 구현하는데 있어 Queue라는 라이브러리가 있지만 일반적인 큐를 구현하는 라이브러리는 아닙니다. 따라서 deque를 이용하여 큐 자료구조를 구현해야 합니다.
일반적으로 리스트 가장앞에 원소를 삽입할때 시간 복잡도는 O(N)입니다. 하지만 deque의 appendleft()를 사용하면 시간복잡도를 O(1)로 줄일 수 있습니다.
리스트 | deque | |
가장 앞쪽에 원소 추가(appendleft(x)) | O(N) | O(1) |
가장 뒤쪽에 원소 추가(append(x)) | O(1) | O(1) |
가장 앞쪽에 있는 원소 제거(leftpop()) | O(N) | O(1) |
가장 뒤쪽에 있는 원소 제거(pop()) | O(1) | O(1) |
deque로 선언한 리스트에서는 일반적인 리스트에서 사용할 수 있는 인덱싱, 슬라이싱 기능은 사용할 수 없습니다. 다만, 리스트의 시작 혹은 끝 부분에 데이터를 삽입하여 삭제할 때는 상당히 효율적입니다.
from collections import deque
data = deque([2, 3, 4])
data.append(5)
data.appendleft(1)
print(data)
print(list(data))
data.pop()
data.popleft()
print(data)
print(list(data))
collections 라이브러리의 Counter는 등장 횟수를 세는 기능을 제공합니다. 원소별 등장 횟수를 세는 기능이 필요할 때 짧은 소스코드로 이를 구현할 수 있습니다.
from collections import Counter
counter = Counter(['red', 'blue', 'red', 'blue', 'green', 'red'])
print(counter['blue'])
print(counter['red'])
print(dict(counter))
반응형
'...' 카테고리의 다른 글
[Server] 리눅스 커널(kernel)이란? (4) | 2021.03.02 |
---|---|
[Python] sort()에서의 key lambda 사용하기 (0) | 2021.02.22 |
[Python] 순열, 조합 라이브러리 itertools (0) | 2021.02.17 |
[Python] 파이썬 2차원 리스트 초기화 (0) | 2021.02.17 |
[Python] 리스트 특정값 모두 제거하기 (0) | 2021.02.17 |