한 번에 이해하는 파이썬 ‘문자열 자르기(Slicing)’

  • 관리자 신현승
  • 카테고리: 개발이슈
  • 조회수: 49
  • 작성일:

파이썬은 데이터 분석에 유용한 문자열 자르기(슬라이싱, Slicing) 기능을 제공합니다. 사용자는 슬라이싱을 통해 문자열의 특정 부분을 효율적으로 추출하거나 조작할 수 있으며, 이는 데이터 분석 및 웹 애플리케이션 개발에 필수적인 기술입니다.

 

이번 글에서는 파이썬 문자열 슬라이싱의 기본 문법과 CPython의 내부 로직을 살펴보겠습니다.

 

<출처: 작가, GPT로 생성>
 

문자열 슬라이싱 사용 방법

파이썬 문자열 슬라이싱은 오브젝트[시작:끝:증감] 형식으로 구성됩니다. 시작 인덱스는 슬라이스 시작 위치를 정의하고, 끝 인덱스는 해당 문자가 포함되지 않으며, 스텝 값은 문자를 건너뛸 간격을 지정합니다.

 

예시:

  • 양수 인덱스: s = “yozm.wishket.com”에서 s[5:12]는 "wishket"을 반환합니다.
  • 음수 인덱스: s[-6:-1]는 "et.co"를 반환합니다.

 

  • 양수 스텝: s[2:8:2]는 "z.i"를 반환합니다.
  • 음수 스텝: s[6:1:-2]는 "i.z"를 반환하며, s[::-1]로 전체를 역순으로 슬라이스할 수 있습니다.

 

<출처: 작가>

 

슬라이싱의 활용 예시는 다음과 같습니다:

  • 특정 패턴 추출(예: 파일 경로에서 파일명 추출)
  • 문자열 일부 수정(예: "Hello"에서 "J" + "ello"로 변경)
  • 문자열 역순 만들기 (s[::-1] 사용)

 

불변 문자열 객체

불변 객체란 기존 내용을 변경할 수 없으며, 새롭게 할당해야 합니다. 이는 문자열 슬라이싱 시 중요한 개념으로, 슬라이싱은 원본 문자열을 변경하지 않으면서 새로운 문자열을 만듭니다.

 

<출처: 작가>

 

슬라이싱 결과 객체의 메모리 관리

슬라이싱 결과는 원본 문자열과 분리된 별도의 객체입니다. CPython은 기본적으로 참조 카운트 기반의 가비지 컬렉션을 사용하며, 부분 문자열에 대한 안전한 복사를 통해 메모리 누수를 방지합니다.

 

  • 빈 문자열과 단일 문자 캐싱을 통해 최적화를 수행합니다.
  • 프리리스트를 사용하여 작은 Unicode 객체의 생성을 빠르게 합니다.

 

예제로 보는 내부 처리 흐름

파이썬 코드 예제의 내부 처리 과정을 살펴보면, 슬라이싱 동작에 따라 메모리 복사가 발생합니다. 예를 들어:

  • sub1 = s[0:]: 전체 문자열 반환, 메모리 사용량 저렴.
  • sub2 = s[7:16]: 부분 문자열 생성, 내부적으로 메모리 복사 발생.
  • sub3 = s[::2]: 짝수 인덱스 문자 수집, 새로운 객체 생성 및 복사 발생.

 

마치며

문자열 슬라이싱은 파이썬에서 텍스트 데이터를 효율적으로 처리하는 중요한 도구입니다. 기본 문법과 활용법을 잘 알고, CPython의 내부 구현을 이해하면 더욱 효과적인 코드를 작성할 수 있습니다.

 


해당 기사는 GPT를 이용하여 요약한 내용입니다.

원문보기


코멘트 (0)