Python(파이썬) 자료 구조
Python(파이썬) 자료 구조
파이썬 자료 구조란?
프로그래밍에서 자료 구조(Data Structure)란 데이터를 효율적으로 저장하고 관리하기 위한 구조를 말합니다. 파이썬은 여러 가지 기본 자료 구조를 제공하며, 상황에 맞게 적절히 활용하면 데이터 처리를 쉽고 직관적으로 할 수 있습니다.
이번 포스트에서는 리스트, 튜플, 딕셔너리, 세트 등 파이썬의 대표적인 자료 구조에 대해 알아보겠습니다.
리스트(List)
리스트는 순서가 있는 객체의 집합입니다. 대괄호([]
)로 표현하며 콤마(,
)로 요소를 구분합니다.
fruits = ["apple", "banana", "cherry"]
print(fruits) # ["apple", "banana", "cherry"]
numbers = [3, 1, 4, 2]
nested_list = [1, [2, 3], 4] # 중첩 리스트
# 인덱싱과 슬라이싱
print(fruits[0]) # "apple"
print(fruits[-1]) # "cherry"
print(fruits[1:3]) # ["banana", "cherry"]
# 리스트 연산
fruits.append("orange") # 요소 추가
fruits.remove("banana") # 요소 제거
fruits.sort() # 정렬
len(fruits) # 길이
# 반복문 활용
for fruit in fruits:
print(fruit)
리스트는 순서가 있고 수정 가능한(mutable) 특성이 있습니다. 인덱싱, 슬라이싱을 통해 요소에 접근할 수 있으며, 다양한 메서드를 제공합니다.
튜플(Tuple)
튜플은 순서가 있는 객체의 집합이지만, 리스트와 달리 수정할 수 없는(immutable) 구조입니다. 소괄호(()
)로 표현합니다.
fruits = ("apple", "banana", "cherry")
print(fruits) # ("apple", "banana", "cherry")
# 인덱싱과 슬라이싱
print(fruits[0]) # "apple"
print(fruits[:2]) # ("apple", "banana")
# 튜플 연산
mixed = (1, 2, "three") # 다른 타입 혼합 가능
nested = (1, (2, 3), 4) # 중첩 튜플
len(mixed) # 길이
# 반복문 활용
for item in mixed:
print(item)
# 튜플 <-> 리스트 변환
list_fruits = list(fruits)
tuple_fruits = tuple(list_fruits)
튜플은 값 변경이 불가능하여 리스트에 비해 조금 더 가벼운 자료형입니다. 하지만 리스트에 비해 연산 기능이 제한적이므로, 사용 목적에 맞게 잘 구분해서 사용해야 합니다.
딕셔너리(Dictionary)
딕셔너리는 키(key)와 값(value)으로 구성된 쌍들의 집합입니다. 중괄호({}
)로 표현하며, 콜론(:
)으로 키와 값을 구분합니다.
person = {"name": "John", "age": 30, "city": "New York"}
print(person) # {"name": "John", "age": 30, "city": "New York"}
# 접근과 추가
print(person["name"]) # "John"
person["email"] = "john@example.com" # 새로운 키-값 쌍 추가
# 반복문 활용
for key in person:
print(f"{key}: {person[key]}")
# 메서드
print(person.keys()) # dict_keys(["name", "age", "city", "email"])
print(person.values()) # dict_values(["John", 30, "New York", "john@example.com"])
print(person.items()) # dict_items([("name", "John"), ("age", 30), ...])
딕셔너리는 순서가 없고(unordered) 키를 통해 값에 접근합니다. 키는 immutable 객체(문자열, 숫자 등)만 가능하며, 값으로는 모든 객체를 저장할 수 있습니다. 딕셔너리 자체는 mutable입니다.
세트(Set)
세트는 유일한 값들의 집합으로, 집합 연산(합집합, 교집합 등)이 가능합니다. 중괄호({}
)로 표현하지만 딕셔너리와는 구분됩니다.
fruits = {"apple", "banana", "cherry"}
print(fruits) # {"cherry", "apple", "banana"}
# 세트 연산
fruits.add("orange") # 요소 추가
fruits.remove("banana") # 요소 제거
new_set = fruits.union({"grape", "kiwi"}) # 합집합
intersection = fruits.intersection(new_set) # 교집합
# 반복문 활용
for fruit in fruits:
print(fruit)
# 세트 <-> 리스트 변환
list_fruits = list(fruits)
set_fruits = set(list_fruits)
세트는 중복을 허용하지 않고, 순서가 없는(unordered) 특징이 있습니다. 수학에서의 집합 개념과 유사하게 연산을 수행할 수 있습니다.
마무리
이번 포스트에서는 파이썬의 대표적인 자료 구조인 리스트, 튜플, 딕셔너리, 세트에 대해 살펴보았습니다. 각 자료 구조의 특징과 사용 방법을 이해하고, 프로그램에서 어떤 상황에 어떤 자료 구조를 활용할지 고민해 보는 것이 중요합니다.
각 자료 구조를 정리하면 다음과 같습니다.
자료 구조 | 특징 | 표기법 |
---|---|---|
리스트 | 순서 있음, 수정 가능 | [요소1, 요소2, ...] |
튜플 | 순서 있음, 수정 불가능 | (요소1, 요소2, ...) |
딕셔너리 | 키-값 쌍, 수정 가능 | {키1:값1, 키2:값2, ...} |
세트 | 유일한 값의 집합, 수정 가능 | {값1, 값2, ...} |
다음 포스트에서는 파일 입출력과 같은 파이썬 기본 기능에 대해 알아보겠습니다.
댓글남기기