관리 메뉴

정리왕

파이썬 문자열3 (문자열 인덱싱과 슬라이싱) 본문

6.개발/파이썬 공부하기

파이썬 문자열3 (문자열 인덱싱과 슬라이싱)

정리합니다 2020. 11. 29. 11:44
반응형

문자열에서 인덱싱과 슬라이싱에 대해서 알아보자.

 

 

 

인덱싱(Indexing)이란 무엇인가를 '가리킨다'는 의미이고,

슬라이싱(Slicing)은 무엇인가를 '잘라낸다'는 의미이다.

 

 

 

 

1. 문자열 인덱싱이란?

컴퓨터는 문자 하나하나에 0부터 시작하여 번호가 매겨져 있다.

 

 

 

a[3]이 의미하는 위치는 a라는 문자열의 네 번째 문자 '파'를 말한다.

프로그래밍을 처음 접하면 a[3]에서 숫자 3이 왜 네 번째 문자를 뜻하는지 의아할 수도 있다.

사실 이 부분이 햇갈릴 수 있는 부분인데, 이렇게 생각하면 쉽다.

 

 

"파이썬은 0부터 숫자를 샌다."

 

 

0부터 숫자를 센다는 것이 처음에는 익숙하지 않겠지만, 계속 사용하다 보면 자연스러워 질 것이다.

 

 

 

 

 

 

 

 

 

1) 문자열 인덱싱 활용하기

인덱싱 예를 몇가지 더 보자.

 

 

 

앞의 a[3] 과 a[0]은 쉽게 이해할 수 있는데, 마지막의 a[-1]이 뜻하는 것은 무엇일까?

눈치 빠르면 알것이다. 문자열을 뒤에서부터 읽기 위해 마이너스(-) 기호를 붙이는 것이다.

즉, a[-1]은 뒤에서부터 세어 첫 번째가 되는 문자를 말한다.

 

뒤에서부터 첫 번째 문자를 표시할 때도 0부터 세어 'a[-0]이라고 해야 하지 않을까?' 라는 의문이 들 수도 있겠지만 잘 생각해보자.

0과 -0은 똑같은 것이기 때문에 a[-0]은 a[0]과 똑같은 값을 보여준다.

 

 

 

 

 

 

 

계속해서 몇 가지 예를 더 보자.

 

a[-2]는 뒤에서부터 두 번재 문자를 가리키는 '이'를 출력하고,

a[-5]는 뒤에서부터 5 번째 문자를 가리키는 '공'를 출력한다.

 

 

 

 

 

 

 

2. 문자열 슬라이싱이란?

문자열에서 단순히 한 문자만 뽑아내는 것이 아니라

'파이썬' 또는 '공부중이다' 같이 단어로 뽑아 내는 방법은 슬라이싱으로 할 수 있다.

다음과 같이 하면 된다.

 

위 방법처럼 단순하게 인덱스로 할 수 있찌만, 파이썬에서는 슬라이싱(Slicing)이라는 더 좋은 방법을 제공한다.

바로 슬라이싱(Slicing) 기법이다.

여기서 배우는 인덱싱 기법과 슬라이싱 기법은 다음에 배울 자료형인 리스트나 튜플에서도 사용할 수 있다.

 

a[0:1]가 뜻하는 것은 a 문자열에서 자리번호 0부터 1까지의 문자를 뽑아낸다는 뜻이다.

하지만 다음과 같은 의문이 생긴다.

0부터 1인데 왜 "나는"가 출력되지 않고 "나" 만 출력될까?

이렇게 되는 이유는 간단하다.

슬라이싱 기법으로 a[시작번호: 끝 번호]를 지정할 때 끝 번호에 해당하는 것은 포함하지 않기 때문이다.

a[0:3]을 수식으로 나타내면 다음과 같다.

0 <= a < 3

 

 

 

 

 

1) 문자열을 슬라이싱 하는 방법

슬라이싱 예를 조금 더 보자.

 

 

위 예는 a[0] + a[1] + a[2] 와 동일하다.

a[2]과 공백 문자이기 때문에 '나는'가 아닌 '나는 '로 출력된다.

공백 문자 역시 일반 문자와 동일하게 취급되고 '나는'와 '나는 '는 완전히 다른 문자열이다.

 

 

 

슬라이싱 할 때 항상 시작번호가 0일 필요는 없다.

 

 

 

a[시작번호:끝번호]에서 끝 번호 부분을 생략하면 시작 번호부터 그 문자열의 끝까지 뽑아 낸다.

 

 

 

 

a[시작번호:끝번호]에서 시작 번호를 생략하면 문자열의 처음부터 끝 번호까지 뽑아 낸다.

 

 

 

 

a[시작번호:끝번호]에서 시작 번호와 끝 번호를 생략하면 문자열의 처음부터 끝까지 뽑아 낸다.

 

 

 

 

 

 

슬라이싱에서도 인덱싱과 마찬가지로 마이너스(-) 기호를 사용할 수 있다.

위 소스 코드에서 a[3:-6]이 뜻하는 것은 a[3]에서부터 a[-7]까지를 말한다.

이 역시 a[-6]은 포함되지 않는다.

 

 

 

 

 

2) 슬라이싱으로 문자열 나누기

위 예는 문자열 a를 두 부분으로 나누는 기법이다.

숫자8일 기준으로 문자열 a를 양쪽으로 한번씩 슬라이싱했다.

a[:8]은 a[8]이 포함되지 않고, a[8:]은 a[8]이 포함되기 때문에 8을 기준으로 두 부분으로 나눌 수 있는 것이다.

 

 

 

 

 

지금까지 인덱싱과 슬라이싱에 대해서 살펴 보았다.

인덱싱과 슬라이싱은 프로그래밍을 할 때 매우 자주 사용하니 꼭 반복해서 연습해야 한다.

 

 

 

 

 

 

★ "파이선" 문자열을 "파이썬"으로 바꾸는 방법?

파이선 문자열을 파이썬으로 바꾸려면 어떻게 해야 할까?

제일 먼저 떠오르는 생각은 다음과 같을 것이다.

즉, a변수에 "파이썬" 문자열을 대입하고 a[2]의 값이 '선'을 a[1]을 '썬'으로 바꾸어 준다는 생각이다.

하지만 결과는 어떻게 나올까?

당연히 오류가 발생한다. 왜냐하면 문자열의 요소값은 바꿀 수 있는 값이 아니기 때문이다.

문자열 자료형은 그 요소값을 변경할 수 없다. 그래서 immutable한 자료형이라고도 부른다.

 

하지만 앞에서 배운 슬라이싱 기법을 사용하면 '파이선'문자열을 사용해 '파이썬'으로 문자열을 바꿀 수 있다.

 

반응형
Comments