# 파이썬 데이터 구조 완벽 정리
1. 리스트(List)
정의
* 순서가 있는 시퀀스형 자료구조
* 여러 데이터 타입을 함께 저장할 수 있는 컨테이너
* 대괄호 [ ]를 사용하여 표현
특징
* 가변(mutable) 데이터 타입
* 인덱싱과 슬라이싱 지원
* 중복된 데이터 저장 가능
* 요소의 추가, 삭제, 수정이 자유로움
* 서로 다른 자료형을 담을 수 있음
형식
* 생성 방법:
- 빈 리스트: list_1 = [ ]
- 데이터가 있는 리스트: list_2 = [1, 2, 3]
- 리스트 함수 사용: list_3 = list()
- 컴프리헨션: list_4 = [x for x in range(5)]
리스트는 파이썬에서 가장 많이 사용되는 데이터 구조로, 여러 타입의 데이터를 순서대로 저장할 수 있습니다.
# 기본 리스트 예제
mixed_list = [1, "파이썬", 3.14, "데이터", 42]
# 리스트 슬라이싱 활용
print(mixed_list[1:4]) # ["파이썬", 3.14, "데이터"]
print(mixed_list[::-1]) # [42, "데이터", 3.14, "파이썬", 1]
mixed_list.append("새로운 항목")
mixed_list.insert(2, "삽입된 항목")
print(mixed_list.count("파이썬")) # 1
numbers = [x for x in mixed_list if isinstance(x, (int, float))]
print(numbers) # [1, 3.14, 42]
2. 딕셔너리(Dictionary)
정의
* 키(key)와 값(value)의 쌍으로 이루어진 자료구조
* 중괄호 { }를 사용하여 표현
* 해시 테이블 기반의 자료구조
특징
* 가변(mutable) 데이터 타입
* 키는 유일하며 변경 불가능(immutable)한 타입만 가능
* 값은 모든 타입 가능
* 순서를 가지지 않음 (Python 3.7부터는 입력 순서 유지)
* 키를 통한 빠른 접근 가능
형식
* 생성 방법:
- 빈 딕셔너리: dict_1 = { }
- 데이터가 있는 딕셔너리:dict_2 = {'key': 'value'}
- 딕셔너리 함수 사용: dict_3 = dict()
- 컴프리헨션: dict_4 = {x: x**2 for x in range(5)}
number_dict = {
1: "하나",
2: "둘",
3: "셋",
4: "넷",
5: "다섯"
}
# 예제 1: 딕셔너리 조회 및 수정
print(number_dict[1]) # "하나"
number_dict[6] = "여섯"
print(number_dict.get(7, "찾을 수 없음")) # "찾을 수 없음"
# 활용 예제 2: 딕셔너리 메서드 활용
keys = number_dict.keys()
values = number_dict.values()
items = number_dict.items()
print(list(items)) # [(1, "하나"), (2, "둘"), ...]
활용 예제 3: 딕셔너리 컴프리헨션
squared_dict = {x: x**2 for x in range(1, 6)}
print(squared_dict) # {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
3. 튜플(Tuple)
* 튜플은 불변(immutable)한 순서가 있는 데이터 구조입니다.
* 소괄호 ( )를 사용하여 표현
* 불변(immutable) 리스트라고도 불림
# 특징
* 불변(immutable) 데이터 타입
* 인덱싱과 슬라이싱 지원
* 중복된 데이터 저장 가능
* 리스트보다 적은 메모리 사용
* 데이터 보호가 필요할 때 사용
형식
* 생성 방법:
- 빈 튜플: tuple_1 = ()
- 데이터가 있는 튜플: tuple_2 = (1, 2, 3)
- 튜플 함수 사용: tuple_3 = tuple()
- 단일 요소 튜플: tuple_4 = (1,)
mixed_tuple = (1, "파이썬", 3.14, "튜플", 42)
활용 예제 1: 튜플 패킹과 언패킹
coordinates = (10, 20, 30)
x, y, z = coordinates
print(f"x: {x}, y: {y}, z: {z}") # x: 10, y: 20, z: 30
활용 예제 2: 튜플을 딕셔너리 키로 사용
point_data = {(0, 0): "원점", (1, 0): "x축 양의 방향", (0, 1): "y축 양의 방향"}
print(point_data[(0, 0)]) # "원점
활용 예제 3: 튜플 메서드 활용
numbers = (1, 2, 2, 3, 2, 4, 5)
print(numbers.count(2)) # 3
print(numbers.index(4)) # 5
4. 세트(Set)
세트는 중복을 허용하지 않는 순서가 없는 데이터 구조입니다.
# 기본 세트 예제
mixed_set = {1, "파이썬", 3.14, "세트", 42}
# 활용 예제 1: 세트 연산
set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}
print(set1 & set2) # 교집합: {4, 5}
print(set1 | set2) # 합집합: {1, 2, 3, 4, 5, 6, 7, 8}
# 활용 예제 2: 중복 제거
numbers = [1, 2, 2, 3, 3, 3, 4, 4, 5]
unique_numbers = set(numbers)
print(unique_numbers) # {1, 2, 3, 4, 5}
# 활용 예제 3: 세트 메서드 활용
fruits = {"사과", "바나나", "오렌지"}
fruits.add("망고")
fruits.remove("바나나")
print(fruits) # {"사과", "오렌지", "망고"}
이상으로 파이썬의 주요 데이터 구조에 대해 알아보았습니다. 각각의 데이터 구조는 고유한 특징과 용도가 있으며, 상황에 맞게 적절히 선택하여 사용하는 것이 중요합니다.