Python03

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, ...}

다음 포스트에서는 파일 입출력과 같은 파이썬 기본 기능에 대해 알아보겠습니다.

댓글남기기