-
Python 마스터 시리즈 11화 – 리스트, 튜플, 딕셔너리, 세트 자료구조 완전 정복기술과 산업/언어 및 프레임워크 2025. 5. 21. 12:19728x90
파이썬의 리스트, 튜플, 딕셔너리, 세트는 각각의 목적에 맞게 최적화된 핵심 자료구조다. 이번 글에서는 이들 자료구조의 내부 동작 원리와 차이점을 바탕으로, 실무에서 어떤 상황에 어떤 구조를 선택해야 하는지를 구체적으로 설명한다.
1. 도입 – 자료구조 선택이 코드 품질을 좌우한다
파이썬은 다양한 내장 자료구조를 제공하며, 매우 유연하게 데이터를 다룰 수 있게 한다.
그러나 유연하다는 점이 오히려 잘못된 자료구조 선택으로 이어지기 쉬운 함정이 되기도 한다.데이터의 순서가 중요한지, 수정이 필요한지, 검색 속도가 중요한지 등
상황에 따라 최적의 자료구조를 선택하는 능력이 실전에서는 핵심 역량이 된다.이번 회차에서는 단순한 사용법이 아니라,
설계 기준, 성능 특성, 사용 사례 중심으로 각 자료구조를 깊이 있게 다룬다.
2. 본문 – 4대 자료구조 완전 분석
2.1 리스트 (list) – 순서 있고 변경 가능
fruits = ['apple', 'banana', 'cherry'] fruits.append('date') fruits[1] = 'blueberry'
- 순서 있음 (인덱스 기반 접근 가능)
- 변경 가능 (mutable)
- 중복 허용
주요 메서드
len(fruits), fruits.index('apple'), fruits.pop(), fruits.insert(1, 'orange')
시간 복잡도
연산 복잡도
접근 O(1) 삽입/삭제 (중간) O(n) 맨 끝에 추가 O(1) 활용 예: 순차 처리, 정렬 대상, 정렬이 중요한 컬렉션
2.2 튜플 (tuple) – 순서 있고 변경 불가능
point = (10, 20)
- 리스트와 유사하지만 불변(immutable)
- 한 번 생성된 이후 변경 불가 → 해시 가능
사용 목적
- 값이 고정된 구조를 표현할 때
- 딕셔너리의 키 등 해시 가능한 요소로 사용할 때
coordinates = {(0, 0): "origin", (1, 1): "point A"}
팩킹/언팩킹
a, b = (1, 2)
활용 예: 좌표, 고정 파라미터 그룹, 키값 구성
2.3 딕셔너리 (dict) – 키-값 쌍, 해시 기반
user = {'name': 'Alice', 'age': 30} user['job'] = 'developer'
- 키는 고유해야 하며, 해시 가능한 타입만 가능 (str, int, tuple 등)
- 값은 어떤 타입이든 가능
주요 메서드
user.keys(), user.values(), user.items()
시간 복잡도
연산 복잡도
키 접근/삽입 평균 O(1), 최악 O(n) 삭제 O(1) 순회 O(n) 활용 예: 구조화된 데이터 저장, JSON 형태 매핑, 검색/필터링 중심 구조
2.4 세트 (set) – 중복 제거, 순서 없음
tags = {'python', 'coding', 'python'} print(tags) # {'coding', 'python'}
- 중복을 자동으로 제거
- 순서 없음 → 인덱싱 불가
- 내부적으로 해시 기반 구현
주요 연산
a = {1, 2, 3} b = {2, 3, 4} a & b # 교집합 a | b # 합집합 a - b # 차집합
시간 복잡도
연산 복잡도
포함 확인 O(1) 추가/삭제 O(1) 집합 연산 O(n) 활용 예: 중복 제거, 유니크 필터링, 빠른 검색, 태그/카테고리 처리
3. 인사이트 – 자료구조 선택 기준표
조건 추천 자료구조
순서 유지 + 변경 가능 list 순서 유지 + 변경 불가 tuple 키-값 매핑 dict 중복 없는 집합 + 빠른 검색 set 고정된 조합의 key tuple (dict key로 사용) 실무 기준 정리:
- list → 순차적 데이터 처리, 순서 중요
- tuple → 파라미터 묶음, 해시 기반 key 구성
- dict → 구조화된 데이터 매핑 (JSON 등)
- set → 중복 제거 + 빠른 포함 확인
4. 정리
- 파이썬의 4대 내장 자료구조는 각각의 사용 목적과 성능 특성이 명확히 다르다
- 자료의 순서, 중복 여부, 변경 가능성, 검색/삽입 속도 등 상황에 따라 구조를 선택해야 한다
- 단순 문법 숙지가 아니라, 자료구조 설계 시 고려 요소를 기준으로 선택하는 것이 실무 역량의 핵심이다
728x90'기술과 산업 > 언어 및 프레임워크' 카테고리의 다른 글
Spring Boot 시리즈 35편 – Spring Cloud Config: 설정 중앙화 전략과 운영환경 속 안전한 구성관리 (0) 2025.05.23 전자정부 표준프레임워크 시리즈 9화 – 메시지 처리와 다국어 지원 기능 완벽 가이드 (2) 2025.05.21 JHipster 시리즈 7화 - 마이크로서비스 구조 전환 – Gateway와 Service Registry 실습 (0) 2025.05.21 Spring Framework 시리즈 4화 – Bean의 생명주기 이해와 커스터마이징 (1) 2025.05.21 Spring Boot 시리즈 34편 – Eureka와 서비스 디스커버리 구조: 마이크로서비스 환경에서의 자동 인스턴스 탐색 전략 (0) 2025.05.21