[python/파이썬] 문자열 슬라이싱

Jongmin Shin·2022년 6월 21일
0

파이썬

목록 보기
1/1
post-thumbnail

설명

파이썬에는 문자열 슬라이싱이라는 매우 편리한 기능을 제공한다. 무엇보다 내부적으로 매우 빠르게 동작한다. 위치를 지정하면 해당 위치에 배열 포인터를 얻게 되며 이를 통해 연결된 객체를 찾아 실제 값을 찾아내는데, 이 과정은 매우 빠르게 진행되므로 문자열을 조작할 때는 항상 슬라이싱을 우선으로 사용하는 편이 속도 개선에 유리하다.
문자열을 별도로 리스트로 매핑하는 등의 처리는 데이터 구조를 다루는 입장에서는 좋은 방법이지만, 별도 자료형으로 매핑하는 과정에서 상당한 연산 비용이 필요하므로 전체적인 속도에서는 오히려 손해를 볼 수 있다. 대부분의 문자열 작업은 슬라이싱으로 처리하는 편이 가장 빠르다.

문법

s[A:B:C] 의 의미는, 인덱스 A 부터 인덱스 B 까지 C의 간격으로 문자열을 만들라는 의미이다.
A가 공백, 처음부터라는 뜻
B가 공백, 가능한 곳 까지 (C가 양수면 마지막 인덱스, C가 음수면 처음 인덱스까지)
C가 공백, 한 칸 간격으로

예제

s = 안녕하세요

s[1:4] == 녕하세 : 인덱스 1에서(0부터 시작) 4이전까지(4는 미호함) 표현. 4개를 의미하는게 아니므로 유의.
s[1:-2] == 녕하 : 인덱스 1에서 -2 이전까지(-2는 미호함) 표현한다. 뒤에서 부터는 음수로 접근 가능.
s[1:] == 녕하세요 : 문자열의 시작 또는 끝은 생략 가능하다.
s[:] == 안녕하세요 : 둘다 생략하면 사본을 리턴한다. 파이썬은 a = b와 같은 형태로 할당하면 변수의 값이 할당되는 것이 아니라 a가 b를 참조하는 형태가 된다. 참조가 아닌 값을 복사하기 위해 [:]를 사용할 수 있다.
s[1:100] == 녕하세요: 인덱스가 지나치게 클 경우 문자열의 최대 길이만큼 표현. S[1:]
s[-1] == 요 : 마지막 문자(뒤에서 첫번째)
s[-4] == 녕 : 뒤에서 4번째
s[:-3] == 안녕 : 뒤에서 3번째 글자 앞까지
s[-3:] == 하세요: 뒹에서 3번째 문자에서 마지막까지
s[::1] == 안녕하세요 : 1은 기본값으로 동일
s[::-1] == 요세하녕안 : 뒤집는다.
s[::2] == 안하요 : 2칸씩 앞으로 이동한다.

참고 자료

https://docs.python.org/release/2.3.5/whatsnew/section-slices.html

0개의 댓글