더북(TheBook)

그렇다면 2::2는 무슨 뜻일까? 그리고 -2::-2, -2:2:-2, 2:2:-2 사이에는 어떤 차이가 있을까?

x[2::2]     # ['c', 'e', 'g']
x[-2::-2]   # ['g', 'e', 'c', 'a']
x[-2:2:-2]  # ['g', 'e']
x[2:2:-2]   # []

중요한 점은 슬라이싱 구문에 스트라이딩까지 들어가면 아주 혼란스럽다는 것이다. 각괄호 안에 수가 세 개나 들어 있으면 코드 밀도가 너무 높아서 읽기 어렵다. 게다가 증가값에 따라 시작값과 끝값이 어떤 역할을 하는지 불분명하다. 특히 증가값이 음수인 경우는 더 그렇다.

이런 문제를 방지하기 위해 시작값이나 끝값을 증가값과 함께 사용하지 말 것을 권한다. 증가값을 사용해야 하는 경우에는 양수값으로 만들고 시작과 끝 인덱스를 생략하라. 시작이나 끝 인덱스와 함께 증가값을 사용해야 한다면 스트라이딩한 결과를 변수에 대입한 다음 슬라이싱하라.

y = x[::2]   # ['a', 'c', 'e', 'g']
z = y[1:-1]  # ['c', 'e']
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.