파이썬/기초 프로그래밍

파이썬의 시퀀스형(Sequence)

Data Jun 2025. 9. 7. 13:55

파이썬에는 여러 종류의 시퀀스 자료형이 존재합니다. 이를 크게 컨테이너(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 불변 → 생성 후 수정 가능 여부

파이썬 시퀀스 자료형을 이렇게 두 축으로 이해하면 훨씬 정리하기 쉽습니다.