앞선 포스팅에서 문자 데이터 결합을 위해 필요한 2가지 연산자와 데이터 길이를 잴 수 있는 len 함수에 대해서 알아보았는데요, 이번에는 데이터 그 자체를 자르거나 특정 데이터만을 꺼낼 수 있는 기능을 알아보도록 하겠습니다.
목차
데이터 자르기 : 슬라이싱
데이터 자르기는 쉽게 생각해서 "안녕하세요"라는 문구에서 앞에서 2개 문구인 '안녕'만 나오게 하고 뒤에는 잘라버리게 하는 기능입니다. 특정 위치에서 문자 간의 연결 고리를 끊어서 새로운 문자를 만들 수 있는 기능입니다. 이런 기능을 '슬라이싱(Slicing)'이라고 합니다. 영어 Slice라는 단어 '썰다'를 동명사화 한 거로 의미 그대로 데이터를 썰어서 특정 데이터만 나타나게끔 합니다. 먼저, 데이터를 자르기 위해서는
1) 내가 나타내고 싶은 문자의 데이터
2) 그 데이터의 시작점과 끝점
3) 어떤 식으로 자를 것인지를 알아야 합니다.
프로그래밍(코딩)의 특징이라고 할 수 있는데 데이터 처음으로 '1'부터 세지 않고 '0'부터 셉니다.
즉, '안녕하세요'라는 데이터의 문자 데이터 순서는 0,1,2,3,4로
0 → 안
1 → 녕
2 → 하
3 → 세
4 → 요
를 가리킵니다.
한 가지 더 개념을 익히자면, 위치에 부여된 숫자를 '인덱스(index)'라고 합니다. 즉, 숫자 0~4를 인덱스라고 합니다.
그래서 만약에 내가 표현하고 싶은 문구가 '안녕'이라면 인덱스 0과 1을 나타내면 되는 겁니다.
그러면, 슬라이싱은 어떤 식으로 표현을 할까요?
print( 데이터 [ 시작 위치 : 끝 위치+1 ] )로 표현을 하게 됩니다.
여기서 중요한 건 끝 위치에 +1을 더해줘야 합니다. 데이터 슬라이싱 문법에서 끝 위치는 포함 금지입니다.
슬라이싱의 추가적인 특정을 살펴보면
① 끝 문자에 +1을 해줘야 한다.
ex) print('안녕하세요'[0:2]) = '안녕'
② 끝 위치가 해당 문자 데이터를 초과하는 경우 마지막 데이터까지 인식해서 나오게 됩니다.
ex) print('안녕하세요'[3:50]) = '하세요'
③ 마지막과 처음 인덱스 생략이 가능합니다. 생략 시 처음과 끝까지 나오게 됩니다.
ex1) print('안녕하세요'[:2]) = '안녕'
ex2) print('안녕하세요'[2:]) = '하세요'
④ 인덱스를 아무것도 지정하지 않으면 전체 데이터가 뜨게 됩니다.
ex) print('안녕하세요'[:]) = '안녕하세요'
주의하실 점이 슬라이싱을 표현하는 [ : ]에서 :을 빼고 표현하면 안 됩니다.
데이터 추출 : 인덱싱
데이터를 자르는 슬라이싱을 알아보았다면, 이제는 데이터 추출을 할 수 있는 인덱싱에 대해 알아보도록 하겠습니다. 인덱싱이란 데이터 하나하나를 추출할 수 있는 기능을 합니다. 인덱싱을 알기 전에 먼저 위에서 설명했던 인덱스에 대해서 다시 알아보도록 하겠습니다. 인덱스는 데이터 하나하나를 위치에 부여된 숫자를 말합니다. '1'부터 시작하지 않고, '0'부터 시작합니다. 그럼 인덱싱의 예시를 살펴보겠습니다.
print('안녕하세요'[0])
print('안녕하세요'[1])
print('안녕하세요'[2])
print('안녕하세요'[3])
▶ 결괏값
안
녕
하
세
입니다.
쉽게 pirnt(데이터[인덱스])로 해주면 값을 나타낼 수 있습니다.
인덱스 범위 내의 값을 입력해줘야지 만약에 벗어나는 인덱스를 입력한 후 실행하게 되면 ( print('안녕하세요'[10]) )
'string index out of range' = '범위를 벗어난 문자열 인덱스'라는 오류 메시지가 뜹니다.
앞의 2가지 내용을 정리해보면 우리는 데이터를 가지고 여러 가지 작업을 할 수가 있습니다. 데이터 자체를 가지고 아무 곳이나 잘라 표현할 수도 있고(슬라이싱), 특정 문자만을 추출해낼 수도 있습니다(인덱싱). 하지만 아직까지 이런 것들이 어디에서 쓰일지는 감이 오지 않지만 기초부터 차근차근 가다 보면 이런 부분이 필요하구나를 느끼지 않을까 싶습니다.
댓글