파이썬 extended slices 라는 것을 공부하게 되었다. 이게 무려 파이썬 2.3 대에서 부터 있었던 것이다. https://docs.python.org/release/2.3.5/whatsnew/section-slices.html
흔히 arr = list(range(10)) 에 대해서 arr[1], arr[1:2] 같은 것은 잘 알고 있을 것이다. 그런데 이 콜론이 2개까지 사용할 수 있다. 이건 마치 C나 Java 언어에서 for 문을 사용하는 것 같은 형태이다. 맨 앞이 초기값, 중간이 종료값-1, 마지막이 증감을 의미하는 형태로 사용할 수 있다. 그리고 그 숫자는 생략 할 수 있다. 다음과 같은 형태 모두 가능하다.
arr = list(range(0,10)) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
arr[0:2] # [0, 1] # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
arr[0:10:2] # [0,2,4,5,8]
arr[:10:2] # 맨 앞을 생략하면 0부터 시작한다. [0,2,4,5,8]
arr[0::2] # 맨 뒤를 생략하면 리스트 끝까지를 의미한다. [0,2,4,5,8]
arr[::2] # 맨 시작과 끝 모두 생략 가능하다. [0,2,4,5,8]
arr[1::2] # [1, 3, 5, 7, 9]
arr[::3] # [0, 3, 6, 9]
arr[:] # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
arr[::] # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
나는 이때까지 3번째 인자를 사용하지 않고 있었다. 그러다 보니 증감이 기본값인 1로 적용하고 사용한 것이었다.
이게 파이썬 버전 2때부터 있었다니. 분명 나는 이것을 책으로 배웠을 것 같은데, 계속 웹프로그래밍만 하다보니 사용할 일이 없다보니 이러한 Slice 방식이 매우 새롭게 느껴진다.