티스토리 뷰
데이터 분석을 위해선 전처리 과정에서 Python 인덱싱(indexing)과 슬라이싱(slicing)을 많이 사용하게 된다. 사실 모든 언어에서 지원하는 개념이자 함수들이기 때문에 별도의 공부가 필요하지는 않지만, 그래도 햇갈릴 수 있는 부분을 정리해보고자 한다.
인덱싱 (indexing)
url이라는 변수에 "http://kj-said.tistory.com" 값을 할당을 한다.
>>> url = "http://kj-said.tistory.com" >>> url 'http://kj-said.tistory.com' >>> type <class 'str'> |
[0]부터 시작하게 된다. 그리고 [-1]은 뒤에서 부터 시작된다. [0] = [-0]기 때문이다.
>>> url[0] 'h' >>> url[-0] 'h' >>> url[-1] 'm' |
슬라이싱 (slicing)
인덱스를 통해서 접근하는 방법은 간략하게 알았고, [0]과 [-0]을 알 수 있었다. 사실 본 포스팅에서 진짜로 이야기하고자 하는 부분이 바로 이부분이다. 과연 slicing을 할 때, 어떻게 읽어야 할까? 자주하지 사용하지 않으면, 계속적으로 잊어버리는 flash memory 같은 내 두뇌를 위해서 아래 그림과 같이 정리를 하고자 한다.
>>> url[0:4] 'http' >>> url[7:14] 'kj-said' |
시작이 0인 경우는 그나마 쉽게 파악을 할 수 있다. 하지만, url[7:14]와 같은 경우에는 정확히 어떻게 가져올 지 유추가 한 번에 안될 때가 있다. 제시하는 방법은 2개가 있다. 개인적으로 편한 부분을 사용하면 될 것 같다. 나는 개인적으로 방법 2번을 사용한다. 엄연히 보면 결국 같은 개념이다. 그래도 이렇게 한 번 보면 다시는 잊어먹지 않을 것이라 생각이 든다.
방법1. 글자를 보지말고, 글자 사이 공백을 봐라.
글자에 index 번호가 있다고 생각하지 말고, 그 글자 앞의 공간에 index가 있다고 생각을 하는 방법이다. 공간이 아니라 글자에 index 번호를 할당하여 생각하는 경우에는 url[7:14]의 경우에 url[14]에 할당된 . 이라는 값이 왠지 포함이 되어야 할 것 같은 느낌이 든다. 14라는 숫자가 마음을 불편하게 하는 것이다. 하지만, 공간에 할당을 하면, 글자를 바라보지 않고 명확한 위치를 알려주기 떄문에 덜 햇갈릴 수 있다.
방법2. 부등식을 활용해라.
7 <= 글자 < 14, index 번호 7번부터 시작해서, 14번을 포함하기 전까지라는 개념으로 접근을 하면 좋다. index 7번인 k부터 index 14번 . 전까지의 글자 kj-said를 가져올 수 있다. 부등식으로 본다라는 생각을 하게 되면, 확실히 덜 햇갈릴 것이다.
방법 2를 활용하면, 음 7부터 14전까지군 이렇게 생각을 하면, 손 쉽게 알 수 있다. 더 이상 고민할 필요가 없다! 그럼 몇 가지 예제를 통하여, 가지고 있는 방법이 잘 통용되나 확인을 해보자.
>>> url[:] 'http://kj-said.tistory.com' >>> url[:14] 'http://kj-said' >>> url[14:] '.tistory.com' |
index 14번을 기준으로 자르면, 부등식을 기준으로 시작점은 포함이 되고, 끝 점은 포함이 되지 않기 때문에, 겹치는 부분이 없는 것을 확인할 수 있다. 만약 부등식이 <= 문자열 <= 이였다면, 14번째 글자 . 은 양쪽에 포함이 되었을 것이다.
그러면, 음수를 이용하여 끝부터 slicing 하는 경우에는 어떨까? 역시나 잘 도입이 되는 것을 확인 할 수 있다. -1에 해당하는 m이 포함되지 않는 것을 확인할 수 있다. 14번째 글자(.)부터 -1번째 글자(m)까지 말이다.
>>> url[14:-1] '.tistory.co' |
혹시나 시작점이 끝점보다 더 뒤에 있는 이런 경우는? syntax 오류를 뱉진 않지만, 값은 나오지 않는다. 그냥 부등호에 해당하는 값이 없기 때문이라고 생각을 하자
>>> url[8:6] '' |
별 내용은 아니지만, 한 번 정리하니까 더 이상 햇갈리진 않을 것 같다.
'무니만 '개발' > Python' 카테고리의 다른 글
Python 나눗셈에 관한 고찰 (음수 나누기, divmod()) (0) | 2018.05.19 |
---|
- Total
- Today
- Yesterday
- python 문자열 전처리
- NT-900X5T-K58A 실리콘 스킨
- 성균관대 데이터사이언스융합과
- python 나눗셈 몫
- Python
- NT-900X5T-K58A
- Fineskin
- 삼성 NT-900X5T-K58A 키스킨
- python 나눗셈
- meta charset
- 성대 돈부리
- 파인스킨
- 무늬개발 python
- 나눗셈 나머지
- 후쿠후쿠 돈부리
- sllicing
- 실리콘 키스킨
- HTML
- divmod
- Semantic Markup
- HTML 한글이 깨져요
- python indexing slicing
- 성대 점심식사
- python divmod
- 데이터사이언스융합과
- 나눗셈 몫
- Markup Language
- 무늬개발
- 성대 후쿠후쿠
- document.characterSet
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |