728x90
Python 은 데이터에 순서를 붙여 나열한 Sequence Type 으로 리스트(list), 튜플(tuple), 범위(range), 문자열(string) 등 여러 가지 형태를 제공한다.
Python 은 이렇게 나열된 데이터들을 쪼갤(Slice) 수 있는데, ":" 을 slice notation 으로 하여 아래와 같은 기능을 제공하고 있다.
Python Sequence Type 의 Slice Notation 기본 문법
variable[start:stop:step] |
[slice() 함수를 이용한 sequence type 변수 나누기]
- start, stop 의 값이 양수 일 경우 인덱스 처음을 기준으로 시작하고, 음수 일 경우 인덱스 끝을 기준으로 시작한다.
- step 의 양수/음수에 따라 결과의 방향이 바뀌고, 크기에 따라 간격이 바뀐다.
variable[start] | variable 의 start 번째 아이템 하나를 나타내는 변수 |
variable[start:stop] | variable 의 start 부터 stop - 1 까지를 나타내는 변수 |
variable[start:] | variable 의 start 부터 끝까지를 나타내는 변수 |
variable[:stop] | variable 의 0부터 stop - 1 까지를 나타내는 변수 |
variable[:] | variable 와 값은 동일하지만 메모리상 별도인 변수 |
variable[start:stop:step] | 앞선 표현들에 :step 추가시 step 씩 건너뛴 값을 나타내는 변수 (step > 0) |
>>> test = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> test[2]
2
>>> test[-8]
2
>>> test[2:6]
[2, 3, 4, 5]
>>> test[2:-4]
[2, 3, 4, 5]
>>> test[-8:6]
[2, 3, 4, 5]
>>> test[-8:-4]
[2, 3, 4, 5]
>>> test[2:]
[2, 3, 4, 5, 6, 7, 8, 9]
>>> test[-8:]
[2, 3, 4, 5, 6, 7, 8, 9]
>>> test[:6]
[0, 1, 2, 3, 4, 5]
>>> test[:-4]
[0, 1, 2, 3, 4, 5]
>>> test[:]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> id(test)
140003032269000
>>> id(test[:])
140003032271496
>>> test[2::2]
[2, 4, 6, 8]
>>> test[:-4:3]
[0, 3]
variable[stop:start:-1] | variable 의 start + 1 부터 stop 까지를 거꾸로 나타내는 변수 |
variable[:start:-1] | variable 의 start + 1 부터 끝까지를 꺼꾸로 나타내는 변수 |
variable[stop::-1] | variable 의 처음부터 stop 까지를 꺼꾸로 나타내는 변수 |
variable[::-1] | variable 의 전체 값을 거꾸로 나타내는 변수 |
variable[start:stop:step] | 앞선 표현들에 step 씩 건너뛴 값을 거꾸로 나타내는 변수 (step < 0) |
>>> test = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> test[7:2:-1]
[7, 6, 5, 4, 3]
>>> test[-3:2:-1]
[7, 6, 5, 4, 3]
>>> test[-3:-8:-1]
[7, 6, 5, 4, 3]
>>> test[7:-8:-1]
[7, 6, 5, 4, 3]
>>> test[:2:-1]
[9, 8, 7, 6, 5, 4, 3]
>>> test[:-8:-1]
[9, 8, 7, 6, 5, 4, 3]
>>> test[7::-1]
[7, 6, 5, 4, 3, 2, 1, 0]
>>> test[-3::-1]
[7, 6, 5, 4, 3, 2, 1, 0]
>>> test[::-1]
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
>>> test[7::-2]
[7, 5, 3, 1]
Preference
https://stackoverflow.com/questions/509211/understanding-slice-notation
728x90
'Language > Python' 카테고리의 다른 글
Python - filter(), iterable 변수 내 값 중 조건에 맞는 값만 반환 (0) | 2020.02.22 |
---|---|
Python - map(), 함수와 iterable 변수를 인자로 받아 iterator 결과를 반환 (0) | 2020.02.19 |
Python - iterable 과 iterator, 그리고 반복문 (0) | 2020.01.02 |
Python - 문자열(str)/바이트(bytes) 시퀀스와 인코딩(encoding)/디코딩(decoding) (0) | 2019.11.28 |
Python - with, context manager에 대한 이해. (0) | 2019.11.16 |
Python - configparser, 기본적인 설정파일을 다루는 모듈 (0) | 2019.10.11 |
Python - 지능형 리스트 (List Comprehension)/제너레이터 표현식 (Generator expression) 의 이해 및 비교 (0) | 2019.09.13 |
Python - random(), 임의의 수(난수)를 구하는 함수 (0) | 2019.03.20 |