본문 바로가기
정보통신기술

파이썬에서 사용하는 기본적인 데이타구조(Data Structure)에 대해 알아보자

by 주니미 2024. 12. 7.

파이썬에서 사용하는 데이터 구조(Data Structure)

파이썬에서는 데이터 구조를 사용해 데이터를 효율적으로 저장하고 관리할 수 있습니다. 기본적인 데이터 구조는 다음과 같습니다.


1. 리스트(List)

  • 특징: 순서가 있으며 변경 가능한(mutable) 데이터 구조.
  • 용도: 여러 데이터 타입을 하나의 컬렉션으로 저장하거나 순차적으로 데이터를 다룰 때 사용.

예제:

# 리스트 생성 및 사용
fruits = ['apple', 'banana', 'cherry']
fruits.append('orange')  # 리스트에 요소 추가
print(fruits)  # ['apple', 'banana', 'cherry', 'orange']
print(fruits[1])  # 'banana'

# 리스트 컴프리헨션
squares = [x**2 for x in range(5)]
print(squares)  # [0, 1, 4, 9, 16]

2. 튜플(Tuple)

  • 특징: 순서가 있으며 변경할 수 없는(immutable) 데이터 구조.
  • 용도: 변경하지 않아야 할 데이터를 저장하거나 여러 값을 반환할 때 사용.

예제:

# 튜플 생성 및 사용
coordinates = (10, 20)
print(coordinates[0])  # 10

# 여러 값 반환 예시
def get_person():
    return "James", 30  # 튜플로 반환
name, age = get_person()
print(name, age)  # James 30

3. 집합(Set)

  • 특징: 순서가 없고 중복을 허용하지 않는 데이터 구조.
  • 용도: 중복 제거나 교집합, 합집합 등의 집합 연산에 사용.

예제:

# 집합 생성 및 연산
numbers = {1, 2, 3, 4}
numbers.add(5)
print(numbers)  # {1, 2, 3, 4, 5}

# 중복 제거
unique = set([1, 1, 2, 3, 3, 4])
print(unique)  # {1, 2, 3, 4}

# 집합 연산
a = {1, 2, 3}
b = {3, 4, 5}
print(a & b)  # 교집합: {3}
print(a | b)  # 합집합: {1, 2, 3, 4, 5}

4. 딕셔너리(Dictionary)

  • 특징: 키(key)-값(value) 쌍으로 데이터를 저장하며, 순서가 유지됨(파이썬 3.7 이상).
  • 용도: 데이터를 키를 통해 빠르게 검색해야 할 때 사용.

예제:

# 딕셔너리 생성 및 사용
person = {'name': 'James', 'age': 30}
person['city'] = 'Seoul'  # 새로운 키-값 추가
print(person)  # {'name': 'James', 'age': 30, 'city': 'Seoul'}

# 딕셔너리 순회
for key, value in person.items():
    print(f"{key}: {value}")

5. 스택(Stack)

  • 특징: Last In First Out(LIFO) 구조.
  • 용도: 재귀, 실행 기록, 되돌리기 기능 등에 사용.

예제:

stack = []
stack.append(10)
stack.append(20)
print(stack.pop())  # 20
print(stack)  # [10]

6. 큐(Queue)

  • 특징: First In First Out(FIFO) 구조.
  • 용도: 작업 대기열, 순차적인 처리 등에 사용.

예제:

from collections import deque

queue = deque()
queue.append(10)
queue.append(20)
print(queue.popleft())  # 10
print(queue)  # deque([20])

7. 우선순위 큐(Priority Queue)

  • 특징: 우선순위에 따라 정렬된 순서로 데이터를 처리.
  • 용도: 작업 스케줄링, 최단 경로 알고리즘 등에 사용.

예제:

import heapq

heap = []
heapq.heappush(heap, (1, 'Task 1'))
heapq.heappush(heap, (2, 'Task 2'))
print(heapq.heappop(heap))  # (1, 'Task 1')

마치며

위의 데이터 구조들은 각각의 용도와 특징에 따라 적합한 상황에서 사용됩니다. 데이터를 효율적으로 관리하고 처리하기 위해 다양한 구조를 잘 이해하고 활용하는 것이 중요합니다. 각 구조를 직접 구현해보며 연습하면 더 빠르게 익힐 수 있습니다.