본문 바로가기
Python

[Python] 인덱싱 / 슬라이싱

by 기리의 개발로그 2023. 12. 29.

인덱싱과 슬라이싱

파이썬에서는 문자열과 리스트에서 인덱싱, 슬라이싱을 사용할 수 있다.


인덱싱


인덱싱 이란 무엇인가를 '가리킨다는 의미이다. 다시 말해서 문자열에서 어떤 글자나 특정 위치를 가리키는 것을 말한다.

H e l l o , P y t h o n !
0 1 2 3 4 5 6 7 8 9 10 11 12 13

파이썬에서 숫자를 셀 때 0부터 센다.

아래 예제에서 처럼 a[1]이라는 것은 a 문자열에서 첫번째 위치에 있는 문자를 의미한다.

a = "Hello, Python!"

print(a[1])
print(a[8])
'e'
'y'

인덱스 값에 음수를 넣을 수도 있다.

a = "Hello, Python!"

print(a[-1])
print(a[-2])
print(a[-6])
'!'
'n'
'y'

a[-1]의 값은 a[13]의 값과 같고,
a[-2]의 값은 a[12], a[-6]의 값은 a[8]과 같음을 알 수 있다.

즉, 음수의 경우는 뒤에서부터 숫자를 세며 -1부터 센다.

H e l l o , P y t h o n !
0 1 2 3 4 5 6 7 8 9 10 11 12 13
-14 -13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1

문자열과 마찬가지로 리스트 자료형에서도 인덱싱이 가능하다.
i = [1, 2, 3, 'y', 's', 'g', ['yang', 'sang', 'gil']] 라는 리스트의 경우 인덱스는 다음과 같다.

1 2 3 'y' 's' 'g' ['yang', 'sang', 'gil']
0 1 2 3 4 5 6
-7 -6 -5 -4 -3 -2 -1

i = [1, 2, 3, 'y', 's', 'g', ['yang', 'sang', 'gil']]

print(i[0])
print(i[6])
print(i[3])
1

'y'

또한, i[6]과 같이 인덱싱 결과가 리스트일 경우 한 번 더 인덱싱을 사용하여 값을 얻을 수 있다.

print(i[6])
print(i[6][0])
['yang', 'sang', 'gil']
'yang'

슬라이싱


슬라이싱 이란 잘라낸다는 의미이다. 다시 말해서, 문자열에서 무엇인가를 잘라내는 것이다.

H e l l o , P y t h o n W o r l d !
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
-20 -19 -18 -17 -16 -15 -14 -13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1

위 문자열에서 Python이라는 문자열을 추출하기 위해서 슬라이싱을 사용한다.

a = "Hello, Python World!"
print(a[7:13])
'Python'

a[7:13]의 의미는 a 문자열에서 7번 문자부터 13번 앞의 문자(12번)까지 추출하는 것을 의미한다.
따라서, a[7:13]의 의미는 7 <= a < 13와 같다.

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

a = "Hello, Python World!"

print(a[5:])
', Python World!'

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

a = "Hello, Python World!"
print(a[:10])
'Hello, Pyt'

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

a = "Hello, Python World!"
print(a[:])
'Hello, Python World!'

a[2:-4]이 뜻하는 것은 a[2]에서부터 a[-5]까지를 말한다.

a = "Hello, Python World!"
print(a[2:-4])
'llo, Python Wo'

문자열 슬라이싱은 아래와 같이 활용할 수 있다.

a = "20010331Rainy"
year = a[:4]
day = a[4:8]
weather = a[8:]

print(year)
print(day)
print(weather)
'2001'
'0331'
'Rainy'

old = "yangsangkil"
temp1 = old[:8]
temp2 = old[9:]
new = temp1 + 'g' + temp2

print(new)
'yangsangGil'

인덱싱과 마찬가지로 리스트에서도 슬라이싱 사용가능하며 문자열의 슬라이싱과 동일하다.

1 2 3 'y' 's' 'g' ['yang', 'sang', 'gil'] 0
0 1 2 3 4 5 6 7
-8 -7 -6 -5 -4 -3 -2 -1

a = [1, 2, 3, 'y', 's', 'g', ['yang', 'sang', 'gil'], 0]

print(a[0:2])
print(a[:2])
print(a[3:])
print(a[3:][1])
print(a[3:][:3])
print(a[6][0:])
print(a[6][1:2])
print(a[6][0:2][1])
[1, 2]
[1, 2]
['y', 's', 'g', ['yang', 'sang', 'gil'], 0]
's'
['y', 's', 'g']
['yang', 'sang', 'gil']
['sang']
'sang'
반응형

'Python' 카테고리의 다른 글

[Python] 딕셔너리(dictionary)  (45) 2024.01.03
[Python] 리스트 함수  (36) 2024.01.02
[Python] 리스트  (31) 2023.12.28
[Python] 문자열 내장함수  (33) 2023.12.27
[Python] 문자열 포맷팅  (45) 2023.12.26

댓글