파이썬에는 여러 종류의 시퀀스 자료형이 존재합니다. 이를 크게 컨테이너(Container) vs 플랫(Flat), 가변(Mutable) vs 불변(Immutable) 관점에서 나눌 수 있습니다.
1. 컨테이너(Container) vs 플랫(Flat)
1️⃣ 컨테이너(Container)
- 특징: 서로 다른 자료형을 담을 수 있음
- 내부적으로는 각 원소에 대한 **객체 참조(reference)**를 저장
- 예시:
- list
- tuple
- collections.deque
lst = [1, "hello", 3.14] # 정수, 문자열, 실수를 동시에 담을 수 있음
tup = (42, [1, 2, 3]) # 튜플 안에 리스트도 포함 가능
2️⃣ 플랫(Flat)
- 특징: 한 가지 자료형만 담음
- 메모리상에 원소들을 **연속적(block)**으로 저장하기 때문에 더 효율적임
- 예시:
- str
- bytes
- bytearray
- array.array
- memoryview
s = "hello" # 문자열 (모두 문자형)
arr = array('i', [1, 2, 3]) # 정수형 전용 배열
2. 가변(Mutable) vs 불변(Immutable)
1️⃣ 가변(Mutable)
- 생성된 이후에도 원소를 수정할 수 있음
- 예시:
- list
- bytearray
- array.array
- memoryview
- collections.deque
lst = [1, 2, 3]
lst[0] = 99 # 리스트 값 변경 가능
2️⃣ 불변(Immutable)
- 생성 후에는 원소를 수정할 수 없음.
- 값이 바뀌는 것처럼 보이지만 사실은 새로운 객체가 생성되는 방식.
- 예시:
- tuple
- str
- bytes
s = "hello"
print(id(s))
s = s.replace("h", "H") # 새로운 문자열 객체 생성
print(id(s)) # 다른 id
정리히면
- 컨테이너 vs 플랫 → 자료형 혼합 가능 여부
- 가변 vs 불변 → 생성 후 수정 가능 여부
파이썬 시퀀스 자료형을 이렇게 두 축으로 이해하면 훨씬 정리하기 쉽습니다.
'파이썬 > 기초 프로그래밍' 카테고리의 다른 글
| 파이썬 해시테이블 개념 및 튜플 → 딕셔너리 변환하기 (0) | 2025.09.07 |
|---|---|
| 파이썬 sorted() vs 리스트 .sort() 제대로 정리하기 (0) | 2025.09.07 |
| 파이썬 리스트 곱하기(*)와 참조 공유 문제 (0) | 2025.09.07 |
| Python list, filter, map 쉽게 이해하기 (0) | 2025.09.07 |
| 파이썬 NamedTuple 간단 정리 (0) | 2025.09.06 |