본문 바로가기

프로그래밍 언어/파이썬

Python 리스트와 다른 컬렉션 비교: 튜플, 집합, 딕셔너리와의 차이점

Python 리스트와 다른 컬렉션 비교: 튜플, 집합, 딕셔너리와의 차이점

Python은 강력한 컬렉션(collection) 타입을 제공하며, 각각의 자료형은 특정한 용도에 적합합니다. 이 글에서는 리스트(list), 튜플(tuple), 집합(set), 딕셔너리(dict)의 차이점을 비교하고, 어떤 상황에서 어떤 자료형을 사용하는 것이 좋은지 살펴보겠습니다.

 

 

목차

  1. 리스트 (list)의 특징과 활용
  2. 튜플 (tuple)의 특징과 활용
  3. 집합 (set)의 특징과 활용
  4. 딕셔너리 (dict)의 특징과 활용
  5. 각 컬렉션의 차이점 비교
  6. 성능 및 메모리 사용 비교
  7. 컬렉션 선택 시 고려할 사항

 

리스트 (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)를 활용하는 것이 적합합니다.

 

 

 

컬렉션 선택 시 고려할 사항

  • 데이터 변경 가능 여부에 따라 리스트 또는 튜플 선택
  • 중복 제거가 필요하면 집합 사용
  • 키-값 매핑이 필요하면 딕셔너리 사용