인덱싱과 슬라이싱
파이썬에서는 문자열과 리스트에서 인덱싱, 슬라이싱을 사용할 수 있다.
인덱싱
인덱싱
이란 무엇인가를 '가리킨다는 의미이다. 다시 말해서 문자열에서 어떤 글자나 특정 위치를 가리키는 것을 말한다.
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) (46) | 2024.01.03 |
---|---|
[Python] 리스트 함수 (36) | 2024.01.02 |
[Python] 리스트 (31) | 2023.12.28 |
[Python] 문자열 내장함수 (33) | 2023.12.27 |
[Python] 문자열 포맷팅 (45) | 2023.12.26 |
댓글