Published on

파이썬 자료구조 정리 - 리스트, 튜플, 세트, 딕셔너리 비교

Authors
  • avatar
    Name
    devnmin
    Twitter

🛠️ 파이썬 자료구조 개요

파이썬에서는 데이터를 저장하고 관리하는 다양한 자료구조를 제공합니다. 각 자료구조는 특성이 다르며, 상황에 따라 적절히 선택해야 합니다. 이번 글에서는 리스트(List), 튜플(Tuple), 세트(Set), 딕셔너리(Dictionary) 의 차이점을 비교해보겠습니다.

📌 리스트 (list)

리스트는 순서가 있는 (ordered) 변경 가능한 (mutable) 자료구조입니다.

✅ 특징

  • 대괄호 []를 사용하여 정의
  • 요소의 추가, 수정, 삭제 가능
  • 중복 허용
  • 순서 유지

💡 사용 예제

my_list = [1, 2, 3, 4, 5]
my_list.append(6)  # 요소 추가
my_list[0] = 100   # 값 변경
print(my_list)  # [100, 2, 3, 4, 5, 6]

📌 튜플 (tuple)

튜플은 순서가 있는 (ordered) 변경 불가능한 (immutable) 자료구조입니다.

✅ 특징

  • 소괄호 ()를 사용하여 정의
  • 요소를 추가, 수정, 삭제할 수 없음
  • 중복 허용
  • 순서 유지

💡 사용 예제

my_tuple = (1, 2, 3, 4, 5)
print(my_tuple[1])  # 2
# my_tuple[1] = 10  # ❌ 오류 발생 (튜플은 변경 불가)

📢 언제 사용하면 좋을까?

  • 값이 변경되면 안 되는 경우 (예: 좌표 값, 설정 값 등)
  • 성능 최적화가 필요한 경우 (튜플이 리스트보다 빠름)

📌 세트 (set)

세트는 순서가 없고 (unordered) 중복을 허용하지 않는 자료구조입니다.

✅ 특징

  • 중괄호 {}를 사용하여 정의
  • 중복 허용하지 않음
  • 순서 유지되지 않음
  • 빠른 검색 속도 제공 (해시 기반)

💡 사용 예제

my_set = {1, 2, 3, 4, 5, 5, 5}  # 중복 요소 자동 제거
my_set.add(6)  # 요소 추가 가능
print(my_set)  # {1, 2, 3, 4, 5, 6}

📢 언제 사용하면 좋을까?

  • 중복 제거가 필요할 때
  • 빠른 멤버십 테스트 (in 연산자 사용)

📌 딕셔너리 (dict)

딕셔너리는 키-값 쌍으로 데이터를 저장하는 자료구조입니다.

✅ 특징

  • 중괄호 {}를 사용하여 정의
  • 키는 중복될 수 없음
  • 순서가 유지됨 (Python 3.7+ 부터)
  • 빠른 조회 속도 제공

💡 사용 예제

my_dict = {"name": "Alice", "age": 25}
my_dict["city"] = "Seoul"  # 새 키-값 추가
print(my_dict)  # {'name': 'Alice', 'age': 25, 'city': 'Seoul'}

📢 언제 사용하면 좋을까?

  • 키와 값을 연관 지어 저장할 때 (예: 사용자 정보, 설정 값 등)
  • 빠른 데이터 조회가 필요할 때

📊 자료구조 비교표

자료구조변경 가능 여부순서 유지중복 허용사용 기호
리스트 (list)✅ 가능✅ 유지✅ 허용[]
튜플 (tuple)❌ 불가능✅ 유지✅ 허용()
세트 (set)✅ 가능❌ 없음❌ 불가{}
딕셔너리 (dict)✅ 가능✅ 유지❌ 키 중복 불가{}

🎯 고급 팁: []list() 차이점

리스트를 생성할 때 []list() 두 가지 방법이 있습니다. 그런데 이 둘은 완전히 동일할까요? 아닙니다!

✅ 차이점

empty_list1 = []  # 직접 빈 리스트 생성
empty_list2 = list()  # list()를 사용해 빈 리스트 생성

보통은 큰 차이가 없지만, list()는 다른 iterable(반복 가능한 객체)을 변환할 때 유용합니다.

string_to_list = list("hello")  # ['h', 'e', 'l', 'l', 'o']
set_to_list = list({1, 2, 3})  # [1, 2, 3]

하지만 []는 더 빠른 성능을 보이며, 빈 리스트를 만들 때는 []가 권장됩니다.

import timeit
print(timeit.timeit("[]", number=1000000))  # 실행 속도 비교
print(timeit.timeit("list()", number=1000000))

결과적으로 []는 더 빠르고, list()는 변환 시 유용하다는 점을 기억하세요! 🚀