파이썬에서 사용하는 데이터 구조(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')
마치며
위의 데이터 구조들은 각각의 용도와 특징에 따라 적합한 상황에서 사용됩니다. 데이터를 효율적으로 관리하고 처리하기 위해 다양한 구조를 잘 이해하고 활용하는 것이 중요합니다. 각 구조를 직접 구현해보며 연습하면 더 빠르게 익힐 수 있습니다.
'정보통신기술' 카테고리의 다른 글
리눅스에서 vim/vi 편집기 기본 명령어와 활용 방법 (0) | 2024.12.08 |
---|---|
윈도우 업데이트 문제로 Propresenter 갑자기 실행이 안될 때 (0) | 2024.12.08 |
캠퍼스 네트워크 설계시 효율적인 대역폭 활용방안에 대해 (0) | 2024.12.07 |
인터넷이 안될 때 알아두면 유용한 ping과 trace 명령 (0) | 2024.12.07 |
통신망 설비의 이중화 구조와 LACP (Link Aggregation Control Protocol) 구성방안 (1) | 2024.12.07 |