검색
검색
공개 노트 검색
회원가입로그인
파이썬 중급 가이드

제1장. 고급 자료구조

파이썬 고급 자료구조

파이썬을 본격적으로 다루기 시작하면, 자료를 저장하고 조작하는 도구로서 다양한 내장 자료구조를 깊이 이해할 필요가 있다. 리스트, 튜플, 딕셔너리, 그리고 집합은 각각의 특성과 용도에 따라 선택할 수 있으며, 중급 단계에서는 이들의 동작 원리와 장단점을 판단하는 안목이 요구된다.

리스트(list)는 데이터의 순서를 보장하며, 변경할 수 있는 특징 덕분에 다양한 상황에서 유연하게 쓸 수 있다. 인덱스를 이용한 접근, 슬라이싱, 요소 추가 및 삭제 등 폭넓게 활용된다. 반면, 튜플(tuple)은 생성한 뒤 값을 바꿀 수 없는 불변 자료형이라, 데이터의 무결성을 보장하거나 해시 가능 객체가 필요한 경우 매우 유용하다. 파이썬에서는 튜플이 딕셔너리의 키로 사용될 수 있는 대표적인 예시다.

딕셔너리(dictionary)는 고유한 키와 값의 연결에 기반하며, 키를 통해 빠르고 직관적으로 데이터에 접근할 수 있다. 내부적으로는 해싱을 통해 효율적인 조회가 이루어진다. 집합(set)은 중복되지 않는 원소들의 모임을 나타내며, 수학적 집합 연산(합집합, 교집합, 차집합 등)에 특히 강력하다.

컴프리헨션: 읽기 쉽고 간결한 데이터 가공

파이썬은 반복문과 조건문을 간결하게 표현할 수 있는 컴프리헨션(Comprehension)을 제공한다. 리스트, 딕셔너리, 집합 자료형 모두에서 사용 가능하다. 예를 들어, "1부터 10까지의 짝수" 리스트를 한 줄에 생성할 수 있다. 컴프리헨션은 복잡한 필터링, 변환 작업을 코드 한 줄로 묶어내어, 읽기 쉽고 유지 보수가 편한 코드를 구현한다. 딕셔너리 컴프리헨션과 집합 컴프리헨션 역시 같은 문법 구조를 지니며, 반복문과 조건문을 손쉽게 조합할 수 있다.

컬렉션즈(Collections) 모듈의 고급 자료형

파이썬 내장 컬렉션 타입만으로 부족할 때는 collections 모듈을 활용할 수 있다. 대표적으로 defaultdict, Counter, deque가 있다.

defaultdict는 기본값을 미리 지정할 수 있는 딕셔너리로, 존재하지 않는 키에 접근할 때 자동으로 초기값을 할당한다.

defaultdict의 예시:

from collections import defaultdict
d = defaultdict(int)
d['a'] += 1  # 'a' 키가 자동으로 0으로 초기화된 후 1이 더해진다

Counter는 자료의 등장 횟수를 손쉽게 셀 수 있게 해 준다. 리스트나 문자열 등 반복 가능한 객체를 넣어주면, 각 원소의 빈도를 계산해 준다.

from collections import Counter
cnt = Counter('hello world')
# 각 알파벳이 몇 번 나왔는지 반환

deque는 양쪽 끝에서 빠르게 데이터를 추가하거나 삭제할 수 있는 자료형이다. 스택과 큐, 또는 슬라이딩 윈도우와 같은 특수한 알고리즘에 자주 쓰인다.

컬렉션즈 모듈을 적극적으로 사용하면, 복잡한 데이터 처리나 성능이 중요한 곳에서 훨씬 효율적인 코드를 작성할 수 있다.

마치며

중급 파이썬 개발자는 자료구조의 기본 작동 방식과 내부 구현에 대한 감각을 바탕으로, 다양한 자료구조를 상황에 맞게 똑똑하게 선택하고 응용한다. 내장 자료구조 뿐만 아니라 컴프리헨션, collections 모듈도 적극적으로 탐구하며, 필요에 따라 조합하여 문제를 해결하는 것이 고급 파이썬 프로그래밍의 첫걸음이라 할 수 있다.


공유하기
카카오로 공유하기
페이스북 공유하기
트위터로 공유하기
url 복사하기