Python - Sequence Type을 Slice 하기

Language/Python 2019. 11. 25. 00:07 posted by TechNote.kr


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