시퀀스(Sequence)란 무엇인가?
시퀀스는 여러 개의 값을 체계적이고 효율적인 방식으로 저장할 수 있게 해주는 파이썬의 핵심 데이터 구조입니다. 파이썬에는 다양한 시퀀스 타입이 있으며, 대표적으로 문자열(str), 유니코드 문자열, 리스트(list), 튜플(tuple), 바이트 배열(bytearray), 그리고 range 객체가 있습니다.
반면 딕셔너리(dictionary)와 집합(set)은 순서가 없는(non-sequential) 데이터를 담는 컨테이너이기 때문에 시퀀스와는 구별됩니다.
주요 시퀀스 타입의 특징
공식 파이썬 문서를 기준으로 각 시퀀스 타입의 특징을 살펴보겠습니다.
1. 문자열(String)
문자열은 변경 불가능한(immutable) 유니코드 코드 포인트의 시퀀스입니다. 한 번 생성된 문자열은 수정할 수 없으며, 새로운 문자열을 만드는 방식으로만 값을 변경할 수 있습니다.
2. 리스트(List)
리스트는 변경 가능한(mutable) 시퀀스로, 일반적으로 성격이 같은(homogeneous) 항목들의 컬렉션을 저장하는 데 사용됩니다. 요소의 추가, 삭제, 수정이 자유롭기 때문에 가장 널리 활용되는 자료형입니다.
3. 튜플(Tuple)
튜플은 변경 불가능한 시퀀스로, 서로 다른 성격의(heterogeneous) 데이터를 하나로 묶어 저장하는 데 적합합니다. 대표적인 예로 내장 함수 enumerate()가 반환하는 2-튜플(인덱스, 값) 형태를 들 수 있습니다.
4. 바이트 배열(Bytearray)
바이트 배열 객체는 변경 가능(mutable)하며, 공통적인 bytes 및 bytearray 연산에 더해 가변 시퀀스 연산까지 지원합니다. 이미지 파일 등 바이너리 데이터를 다룰 때 유용합니다.
5. range 객체
range 타입은 변경 불가능한 숫자 시퀀스를 나타냅니다. 주로 for 반복문에서 특정 횟수만큼 코드를 실행할 때 사용되며, 메모리를 효율적으로 사용한다는 장점이 있습니다.
시퀀스 타입 한눈에 비교하기
| 타입 | 변경 가능 여부 | 주요 용도 |
|---|---|---|
| 문자열(str) | 불가능 | 텍스트 데이터 저장 |
| 리스트(list) | 가능 | 동종 항목 컬렉션 관리 |
| 튜플(tuple) | 불가능 | 이질적 데이터 묶음 보관 |
| 바이트 배열(bytearray) | 가능 | 수정 가능한 바이너리 데이터 처리 |
| range | 불가능 | 반복문용 숫자 시퀀스 생성 |
마무리
각 시퀀스 타입은 '변경 가능 여부'와 '저장하려는 데이터의 성격'에 따라 용도가 달라집니다. 데이터를 자주 수정해야 한다면 리스트나 bytearray를, 한 번 정한 값을 안전하게 유지해야 한다면 문자열이나 튜플을 선택하는 것이 좋습니다. 상황에 맞는 시퀀스 타입을 선택하면 더욱 효율적이고 안정적인 파이썬 코드를 작성할 수 있습니다.