Python 리스트와 다른 컬렉션 비교: 튜플, 집합, 딕셔너리와의 차이점
Python은 강력한 컬렉션(collection) 타입을 제공하며, 각각의 자료형은 특정한 용도에 적합합니다. 이 글에서는 리스트(list
), 튜플(tuple
), 집합(set
), 딕셔너리(dict
)의 차이점을 비교하고, 어떤 상황에서 어떤 자료형을 사용하는 것이 좋은지 살펴보겠습니다.
목차
- 리스트 (list)의 특징과 활용
- 튜플 (tuple)의 특징과 활용
- 집합 (set)의 특징과 활용
- 딕셔너리 (dict)의 특징과 활용
- 각 컬렉션의 차이점 비교
- 성능 및 메모리 사용 비교
- 컬렉션 선택 시 고려할 사항
리스트 (list)의 특징과 활용
리스트는 가장 기본적인 컬렉션 타입으로, 다양한 데이터를 순차적으로 저장할 수 있습니다.
특징
- 순서(인덱스)가 있으며, 중복된 값을 가질 수 있음
- 데이터를 추가, 수정, 삭제할 수 있음 (mutable)
- 다양한 데이터 타입을 혼합하여 저장 가능
예제 코드
my_list = [1, 2, 3, "Python", 3.14]
my_list.append(4) # 요소 추가
print(my_list[2]) # 인덱싱 접근 가능
튜플 (tuple)의 특징과 활용
튜플은 리스트와 유사하지만 불변(immutable) 속성을 가집니다.
특징
- 순서가 있으며, 중복된 값을 가질 수 있음
- 한 번 생성되면 변경이 불가능 (immutable)
- 리스트보다 메모리를 적게 사용하며, 속도가 빠름
예제 코드
my_tuple = (1, 2, 3, "Python")
print(my_tuple[1]) # 튜플 요소 접근 가능
# my_tuple[1] = 100 # 오류 발생 (튜플은 변경 불가능)
집합 (set)의 특징과 활용
집합은 중복을 허용하지 않으며, 순서가 없는 컬렉션입니다.
특징
- 순서가 없음 (unordered)
- 중복된 값을 허용하지 않음
- 교집합, 합집합 등의 집합 연산 가능
예제 코드
my_set = {1, 2, 3, 3, 4} # 중복된 3은 자동 제거됨
my_set.add(5) # 요소 추가 가능
print(my_set)
딕셔너리 (dict)의 특징과 활용
딕셔너리는 키-값(key-value) 쌍으로 이루어진 컬렉션입니다.
특징
- 순서가 유지됨 (Python 3.7부터)
- 키(key)는 유일하며, 값을 중복 가능
- 빠른 검색 속도를 제공
예제 코드
my_dict = {"name": "Alice", "age": 25}
print(my_dict["name"]) # 키를 사용한 값 조회
my_dict["age"] = 26 # 값 변경 가능
각 컬렉션의 차이점 비교
컬렉션 | 변경 가능성 | 중복 허용 | 순서 유지 | 특징 |
---|---|---|---|---|
리스트 (list) | 가능 | 허용 | 유지 | 일반적인 시퀀스 |
튜플 (tuple) | 불가능 | 허용 | 유지 | 변경 불가능, 속도 빠름 |
집합 (set) | 가능 | 허용 안 됨 | 유지 안 됨 | 중복 제거, 집합 연산 |
딕셔너리 (dict) | 가능 | 키 중복 불가 | 유지 | 키-값 저장 |
성능 및 메모리 사용 비교
컬렉션 타입마다 내부 구현 방식이 다르므로, 성능과 메모리 사용량에도 차이가 있습니다. 효율적인 데이터 구조를 선택하기 위해 각 컬렉션의 특성을 살펴보겠습니다.
1. 메모리 사용량
- 튜플 (tuple)은 불변(immutable) 속성 덕분에 리스트보다 메모리를 적게 사용합니다.
- 리스트 (list)는 동적으로 크기가 변할 수 있어, 추가적인 메모리를 할당할 가능성이 높습니다.
- 집합 (set)과 딕셔너리 (dict)는 내부적으로 해시 테이블을 사용하므로, 리스트보다 더 많은 메모리를 차지할 수 있습니다.
2. 연산 속도 비교
연산 | 리스트 (list) | 튜플 (tuple) | 집합 (set) | 딕셔너리 (dict) |
---|---|---|---|---|
인덱싱 조회 | O(1) | O(1) | N/A | O(1) (키 기반) |
검색 | O(n) | O(n) | O(1)~O(n) | O(1)~O(n) (키 기반) |
삽입 | O(1)~O(n) | 불가능 | O(1)~O(n) | O(1)~O(n) |
3. 주요 고려사항
- **빠른 검색**이 필요하다면 집합(set) 또는 딕셔너리(dict)가 유리합니다.
- **메모리 효율**이 중요하다면 튜플(tuple)이 좋은 선택입니다.
- **순차적인 데이터 조작**이 많다면 리스트(list)를 활용하는 것이 적합합니다.
컬렉션 선택 시 고려할 사항
- 데이터 변경 가능 여부에 따라 리스트 또는 튜플 선택
- 중복 제거가 필요하면 집합 사용
- 키-값 매핑이 필요하면 딕셔너리 사용
'프로그래밍 언어 > 파이썬' 카테고리의 다른 글
파이썬 복소수, complex 타입과 활용법 (0) | 2025.03.06 |
---|---|
Python str 데이터 타입, 포매팅과 인코딩 기법 (0) | 2025.02.28 |
Python bool, False로 평가되는 값들과 그 활용법 (0) | 2025.02.16 |
complex 데이터 타입으로 파이썬에서 복소수 계산하기 (0) | 2025.02.10 |
Python에서 문자열(str) 처리하기, 함수와 메서드 비교 (0) | 2025.02.04 |