이번 포스팅에서는 파이썬의 인덱싱(Indexing)과 슬라이싱(Slicing)에 대하여 공부를 해보고자 한다.
인덱싱(Indexing)과 슬라이싱(Slicing)
문자열의 각 문자는 index 번호를 가지고 index는 0부터 시작한다.
안 | 녕 | 하 | 세 | 요 | . |
0 | 1 | 2 | 3 | 4 | 5 |
-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
'Back-End > Python' 카테고리의 다른 글
[Python] 데이터 타입 변환 함수 (0) | 2022.09.17 |
---|---|
[Python] 문자열 형식화(formatting) (0) | 2022.09.17 |
[Python] 데이터 타입 (Data Type) - 문자형(String) (0) | 2022.09.16 |
[Python] 데이터 타입 (Data Type) - 논리형(Boolean) (0) | 2022.09.15 |
[Python] 데이터 타입 (Data Type) - 숫자형 (numeric) (0) | 2022.09.15 |