archive
Collections 모듈 정리 본문
코테를 풀다보니 정리를 할 필요성을 느끼는 것 중 하나가 바로 Collection 모듈이랑 이진 연산...
일단 오늘은 Collection 모듈부터 정리해보려고 한다.
나도 이제 4학년이니 코테를 좀 빡 준비해야하는데 그러려면 남의 코드도 보면서 쓰윽 넘기는 게 아니라 새로운 방법론이나 잘 모르는 방법론이 있으면 확실하게 배우고 그 다음 단계로 넘어가는 것이 필요할 거 같다
아 그리고 인덱스 범위 초과 오류가 제일 많이 뜨는데, 이 부분은 꼭 고치고 싶고
문제를 딱 보면 코드를 어떻게 짜야할 지 머릿속으로 구상은 잘 되는데 그걸 구현하는 게 쉬운 일이 아닌 거 같다. 연습과 학습밖에 길이 없겠지 !
일단 Collection 모듈에 대해서 정리해 보자
Collection 모듈은 파이썬의 자료형 (list, tuple, dict)들에게 확장된 기능을 부여하기 위해 제작된 파이썬의 내장 모듈이다. 자주 사용되는 클래스는 세 가지가 있고, 알아두면 좋을만한 것도 세 가지가 있다고 한다.
Counter, deque, defaultdict, namedtuple, OrderedDict 등
1. deque
-deque는 연속적으로 나열된 데이터의 시작 부분이나 끝 부분에 데이터를 삽입하거나 삭제할 수 있다
-또 deque는 stack 이나 queue 자료구조의 대용으로도 사용이 가능하다
-메서드
메서드 | 설명 |
appendleft(a) | 원소 a를 첫 번째 인덱스에 삽입 |
append(a) | 원소 a를 마지막 인덱스에 삽입 |
popleft() | 첫 번째 원소를 삭제 |
pop() | 마지막 원소를 삭제 |
모든 시간 복잡도는 O(1) |
from collections import deque
data = deque([4, 5, 6])
data.appendleft(3)
data.append(7)
print(data)
print(list(data))
-삽입 및 삭제 연산이 양 쪽 끝에서 이루어질 때 너무나도 편리하게 잘 사용할 거 같음 ! 굳이 다 원소 순회하지 않아도 되고 삭제 연산도 delete나 remove가 아니라 pop 연산을 지원해서 값 반환도 되는 거 같고 !
2. Counter
-Collection 모듈에서 제공하는 Counter는 해당 객체 내부 원소의 등장 횟수를 세어주는 기능을 한다.
from collections import Counter
data = Counter(['A', 'B', 'C', 'A', 'C'])
print(data['A'])
print(data['B'])
print(data['C'])
print(dict(data)) #사전 자료형
- 그냥 리스트를 바로 메소드 적용하면 안 되고, 타겟 메소드를 매개변수로 받은 카운터 객체를 생성하고 변수에 저장해서 그 아이를 활용해서 메소드를 적용해야한다.
-위와 같이 키 값을 입력하면 딕셔너리 값으로 출력
-연산자를 활용해서 특정 키에 해당하는 값을 갱신할 수 있음
-Counter에서 가장 활용적인 것이 most_common() 같아 보임
-Counter가 자주 쓰이는 경우는 가장 많이 나온 데이터나 가장 적게 나온 데이터를 찾을 때임
-Counter 클래스는 이와 같은 작업을 조금 더 쉽게 할 수 있도록, 데이터의 개수가 많은 순서대로 정렬된 배열을 리턴하는 most_common()이라는 메서드를 제공하고 있음
from collections import Counter
Counter('hello world').most_common()
# 출력 >>[('l', 3), ('o', 2), ('h', 1), ('e', 1), (' ', 1), ('w', 1), ('r', 1), ('d', 1)]
-이 메서드의 인자로 정수를 넘기면, 그 정수만큼 리턴하기 때문에 가장 개수가 많은 k개의 데이터를 얻을 수 있음
from collections import Counter
Counter('hello world').most_common(1)
# 출력 >>[('l', 3)]
-Counter가 재미있는 부분은 바로 숫자처럼 산술 연산자를 사용할 수 있다는 점이다
'Python > Python 코테 준비' 카테고리의 다른 글
enumerate() (0) | 2024.03.14 |
---|---|
sort vs sorted (0) | 2024.03.13 |
is_integer(), isalnum() (0) | 2024.03.13 |
zip() 함수 (0) | 2024.03.11 |
[섹션 2] #1 - #5 (0) | 2024.01.05 |