이번에는 슬라이싱에 대해 알아보겠습니다!
[:]

파이썬에서 데이터의 특정 위치를 짚어내는 것을 '인덱싱(Indexing)'이라고 한다면,
원하는 구간을 통째로 잘라내는 행위를 '슬라이싱(Slicing)'이라고 합니다.
문자열을 포함하여 리스트, 튜플 등 대다수의 연속형 데이터 구조(Collection)에서 동일하게 지원하는 매우 강력한 문법입니다.
1. 슬라이싱의 본질: 차원 유지
데이터 분석이나 전처리(ETL) 관점에서 슬라이싱이 가지는 가장 큰 특징은 '차원을 유지한다'는 점입니다. 인덱싱을 통해 2차원 데이터에서 특정 행을 하나 뽑아내면 1차원 데이터로 차원이 축소되지만, 슬라이싱을 통해 여러 행을 잘라내면 여전히 2차원 데이터 형태를 유지합니다. 문자열의 경우, 슬라이싱 된 결과물 역시 동일하게 문자열(str) 타입을 반환하며, 간격(step)을 1로 설정할 경우 통상적으로 이웃한(연속적인) 데이터들이 추출됩니다.
2. 슬라이싱 기본 문법
슬라이싱은 대괄호([]) 안에 콜론(:)을 사용하여 시작점, 끝점, 간격을 지정합니다.
변수명[시작 인덱스 : 끝 인덱스 : 간격(step)]
- 시작 인덱스: 추출을 시작할 위치 (포함, >=)
- 끝 인덱스: 추출을 종료할 위치 (미포함, <)
- 간격(step): 데이터를 추출할 간격. 기본값은 1이며 생략 가능합니다.
3. 실전 슬라이싱 예제
sample = 'pineapple' 이라는 더미 데이터를 활용하여 다양한 슬라이싱 기법을 확인해 보겠습니다.
sample = 'pineapple'
# 1. 앞쪽 문자열 자르기 (Prefix 추출)
# 시작 인덱스를 생략하면 처음(0)부터 시작합니다. (0 <= 인덱스 < 4)
print(sample[:4]) # 출력: pine
# 2. 뒤쪽 문자열 자르기 (Suffix 추출)
# 끝 인덱스를 생략하면 문자열의 끝까지 추출합니다.
# 역방향 인덱스(-5)부터 끝까지 자릅니다.
print(sample[-5:]) # 출력: apple
# 3. 양끝 문자열 1개씩 잘라내기
# 인덱스 1부터 마지막 글자 앞(-1 미포함)까지 추출합니다.
print(sample[1:-1]) # 출력: ineappl
# 4. 간격(step)을 두고 추출하기
# 1번부터 -1번 앞까지, 2칸씩 건너뛰며 추출합니다.
print(sample[1:-1:2]) # 출력: iepl
제가 근데 저 step이 왜 필요한지 찾아봤는데 아래 예시 같이 데이터가 너무 촘촘하게 수집되었을 때 전체적인 흐름만 파악하거나 연산 속도를 높이기 위해, 데이터의 개수를 절반으로 줄일 때 사용한다고 합니다.
# 1초 단위로 측정된 온도 데이터
temp_1sec = [20.1, 20.2, 20.1, 20.4, 20.5, 20.3, 20.6]
# 2초 단위 데이터로 축소 (전체 데이터의 절반만 추출)
temp_2sec = temp_1sec[::2]
4. 💡 추가 지식: 문자열 카피와 리버스(Reverse)
전체 슬라이싱과 메모리 참조 (id 확인)
처음부터 끝까지 생략하여 sample[:] 형태로 슬라이싱 하면 원본과 동일한 문자열이 반환됩니다. 파이썬에서 문자열은 변경이 불가능한 '불변(Immutable)' 객체입니다. 따라서 파이썬은 메모리 낭비를 막기 위해 완전히 똑같은 문자열을 새로 생성하는 대신, 기존 문자열이 존재하는 메모리 주소(id)를 그대로 가리키도록 최적화되어 있습니다.
sample = 'pineapple'
# 원본의 고유 주소값과 전체 슬라이싱 결과의 주소값이 동일함
print(id(sample) == id(sample[:])) # 출력: True
문자열 순서 뒤집기 (역순 출력)
슬라이싱의 간격(step)에 음수를 부여하면 문자열을 반대 방향으로 읽어올 수 있습니다. 특히 -1을 부여하면 아주 간단하게 문자열을 뒤집을 수 있으며, 이는 코딩 테스트나 실무 전처리 과정에서 자주 쓰이는 유용한 기법입니다.
# 처음부터 끝까지, 역방향(-1칸씩)으로 추출
reversed_sample = sample[::-1]
print(reversed_sample) # 출력: elppaenip
오늘의 한 마디
행복에 대해 다시 한번 알게 되었습니다. 행복 진짜 별거 없습니다. 제가 항상 이야기하는 비교하지 말기 이런 거도 있지만 어느 글에서 그런 말을 해주시더라고요. 그냥 숨을 편하게 쉴 수 있거나 걸어 다닐 다리가 있다는 생각만으로도 행복해질 수 있다고요.
그래서 저는 제가 좋아하는 사람과 놀러갈 때도 두 다리가 멀쩡하다는 생각 하나로 더 신나게 즐기고 논답니다. 그냥 그 순간을 즐길 수 있는 두 다리, 폐, 코, 입, 귀, 눈, 손, 팔... 등등 이 있다는 것에 행복을 느끼면 그 순간도 즐길 수 있게 되더라고요.
행복... 별거 없습니다.
'코딩 개발 > Python' 카테고리의 다른 글
| Python - 문자열 포매팅 (%, format, f-string) (0) | 2026.07.08 |
|---|---|
| Python - 문자열 처리 함수 (split(), join(), lower(), upper(), strip() 형제들, find(), index(), in, startwith, endswith, replace()) (0) | 2026.07.07 |
| Python - 문자열 추출(인덱싱) (0) | 2026.07.05 |
| Python - 단일 데이터형 (수치형) (0) | 2026.07.03 |
| Python - 주석, 변수, 상수, 리터럴, 네이밍 컨벤션 (3) | 2026.07.02 |