MOOC
[머신러닝을 위한 파이썬] pythonic code 2
ParkS2
2024. 12. 22. 12:57
1. Deque
- 설명: 스택(Stack)과 큐(Queue)를 모두 지원하며, 리스트보다 효율적인 자료 구조.
- 주요 기능: append, appendleft, pop, popleft, rotate, reverse 등.
- 장점: 메모리 효율성과 속도 향상.
from collections import deque
# 기본 사용
deque_list = deque()
for i in range(5):
deque_list.append(i)
print(deque_list) # deque([0, 1, 2, 3, 4])
# 왼쪽에 값 추가
deque_list.appendleft(10)
print(deque_list) # deque([10, 0, 1, 2, 3, 4])
# 회전
deque_list.rotate(2)
print(deque_list) # deque([3, 4, 10, 0, 1, 2])
# 확장
deque_list.extend([5, 6, 7])
print(deque_list) # deque([3, 4, 10, 0, 1, 2, 5, 6, 7])
2. OrderedDict
- 설명: 입력한 순서를 유지하는 딕셔너리.
- 활용: 키-값 쌍을 정렬하거나 순서를 보존해야 할 때 유용.
from collections import OrderedDict
# 입력 순서 유지
d = OrderedDict()
d['x'] = 100
d['y'] = 200
d['z'] = 300
for k, v in d.items():
print(k, v)
# 출력: x 100, y 200, z 300
# 정렬 예시
sorted_dict = OrderedDict(sorted(d.items(), key=lambda t: t[1]))
for k, v in sorted_dict.items():
print(k, v)
# 출력: x 100, y 200, z 300 (값 기준 오름차순 정렬)
3. DefaultDict
- 설명: 딕셔너리의 기본값을 설정하여 키가 없을 경우 기본값을 반환.
- 활용: 데이터 카운팅, 초기화 작업 등에 유용.
from collections import defaultdict
# 기본값 0 설정
d = defaultdict(lambda: 0)
print(d['missing_key']) # 0
# 단어 빈도수 계산
text = "a quick brown fox jumps over the lazy dog".split()
word_count = defaultdict(lambda: 0)
for word in text:
word_count[word] += 1
print(word_count) # {'a': 1, 'quick': 1, 'brown': 1, ...}
4. Counter
- 설명: 시퀀스 자료형의 요소 빈도수를 계산하여 딕셔너리 형태로 반환.
- 활용: 데이터 분석, 빈도 계산, 집합 연산 지원.
from collections import Counter
# 단어 빈도수 계산
text = "a quick brown fox jumps over the lazy dog".split()
counter = Counter(text)
print(counter) # Counter({'a': 1, 'quick': 1, ...})
# 특정 단어 개수
print(counter['a']) # 1
5. NamedTuple
- 설명: 튜플을 기반으로 필드 이름과 인덱스를 통해 데이터에 접근할 수 있는 구조체.
- 활용: 데이터를 구조화하여 읽기 쉽게 저장.
from collections import namedtuple
# 기본 사용
Point = namedtuple('Point', ['x', 'y'])
p = Point(11, 22)
print(p.x + p.y) # 33
# 데이터 읽기
Student = namedtuple('Student', ['name', 'age', 'grade'])
s = Student('Alice', 20, 'A')
print(s.name) # Alice
print(s[1]) # 20