Programming

; develop a program

Back-End/Python

[Python] 문자열 인덱싱(Indexing) 과 슬라이싱(Slicing)

Clloud_ 2022. 9. 16. 11:37
반응형

이번 포스팅에서는 파이썬의 인덱싱(Indexing)과 슬라이싱(Slicing)에 대하여 공부를 해보고자 한다.

 


인덱싱(Indexing)과 슬라이싱(Slicing)

문자열의 각 문자는 index 번호를 가지고 index는 0부터 시작한다.

 

하  세  요 
0 1
-6 -5 -4 -3 -2 -1

 


인덱싱(Indexing)

인덱싱(Indexing)은 문자열의 index를 이용해 문자를 조회한다.

 

문자열 [ index ]

index의 글자를 조회하고 index를 음수로 주면 뒤에서부터 조회한다.

문자열은 불변(Immutable)이라서 값 안의 일부를 변경할 수 없다.

 

예제

순서 1. 문자열 생성 후 글자 수 조회

순서 2. 문자열의 3번째 글자 조회

순서 3. 음수와 양수를 사용해 같은 위치의 글자 조회

순서 3. 특정 index의 값 변경 - 문자열은 불변(Immutable)이기 때문에 error 발생

s = "안녕하세요. 반갑습니다."
print(len(s))

print("세번째 글자: " + s[2])

print("뒤에서 두번째 글자: ", s[11])
print("뒤에서 두번째 글자: ", s[-2])

s[0] = "밖"

 

[실행결과]

13
세번째 글자: 하
 뒤에서 두번째 글자:  다
뒤에서 두번째 글자:  다
error

 


슬라이싱(Slicing)

슬라이싱(Slicing)은 문자열의 index 범위로 문자열을 조회한다.

 

문자열 [시작 index : 종료 index : 간격]

시작 index부터 종료 index -1까지의 범위를 지정하고 조회할 간격을 지정한다.

간격을 지정하면 간격만큼 index를 증/감한다. (생략 시 1이 기본 간격)

 

0번 index 즉, 처음부터 조회 시 시작 index는 생략이 가능하다.

str_value [ : 5] = str_value [0 : 5] => 0 ~ 4까지 조회한다.

 

마지막 index까지 (끝까지) 조회 시 종료 index는 생략이 가능하다.

str_value [2 : 마지막 index]  = str_value [2 : ] => 2번 index에서 끝까지 조회한다.

 

 

명시적으로 간격을 줄 경우

str_value [시작 index : 종료 index : 3] = str_value [ : : 3] => 0, 3, 6, 9.. index의 값을 조회한다.

 

종료 index > 시작 index일 경우, 간격을 음수로 하면 역으로 반환한다.

str_value [5: 1: -1] => 5, 4, 3, 2 index의 값 조회한다.

str_value [ : : -1] => 마지막 index ~ 0번 index까지 의미. Reverse 한다.

 

예제 1

순서 1. 문자열 생성

순서 2. 범위는 2번째 idx ~ 8번째 idx까지, 간격은 1인 경우

순서 3. 범위는 앞에서 2번째 idx ~ 뒤에서 두 번째 idx까지 간격은 1일 경우

순서 4. 범위는 2번째 idx ~ 8번째 idx까지, 간격은 2인 경우

순서 5. 범위는 2번째 idx ~ 8번째 idx까지 Reverse 한다.

s2 = '0123456789'

print(s2[2:8:1])

print(s2[2:-2:1])

print(s2[2:8:2])

print(s2[8:2:-1])

 

[실행결과]

234567
234567
246
876543

 

예제 2

순서 1. 간격을 생략한 경우 default 값은 1이다.

순서 2. 시작 index를 생략한 경우 default 값은 0이다.

순서 3. 종료 index 생략한 경우 마지막 index까지 다 가져온다. (마지막 index + 1)

순서 4. 모든 값 생략

순서 5. 전체 reverse

print(s2[1:9])	

print(s2[:8])		

print(s2[2:])	

print(s2[:])	

print(s2[::-1])

 

[실행결과]

12345678
01234567
23456789
0123456789
9876543210

 


반응형