- Published on
파이썬 자료구조 정리 - 리스트, 튜플, 세트, 딕셔너리 비교
- Authors
- Name
- devnmin
🛠️ 파이썬 자료구조 개요
파이썬에서는 데이터를 저장하고 관리하는 다양한 자료구조를 제공합니다. 각 자료구조는 특성이 다르며, 상황에 따라 적절히 선택해야 합니다. 이번 글에서는 리스트(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()
는 변환 시 유용하다는 점을 기억하세요! 🚀