-
리스트의 일정한 간격을 두고 슬라이싱할 수 있는 구문
- 리스트[시작:끝:증가값]
x = ['빨강', '주황', '노랑', '초록', '파랑', '자주'] odds = x[::2] evens = x[1::2] print(odds) print(evens) >>> ['빨강', '노랑', '파랑'] ['주황', '초록', '자주']
-
단점
- 바이트 문자열 혹은 유니코드 문자열을 역으로 뒤집는 방법: 증가값에 -1 사용
- 유니코드 데이터를 UTF-8 로 인코딩한 문자열은 작동 x
w = '寿司' x = w.encode('utf-8') y = x[::-1] z = y.decode('utf-8') >>> Traceback ... UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb8 in position 0: invalid start byte
- 2바이트로 표현될 수 있는 utf-8로 인코딩된 문자열은 문제 발생 가능성 존재
- 한 식에 스트라이드, 슬라이스가 존재하면 가독성 떨어짐, 직관적으로 알기 힘듬
- 증가값을 사용해야 하는 경우 양수를 사용하고 시작, 끝 인덱스 생략을 권장
- 시작, 끝, 증가값 모두 사용해야 하는 경우 스트라이딩 먼저 진행, 이후 슬라이스
- 첫번째 연산은 슬라이스 크기를 가능한 줄이는 것!
- 시간, 메모리 고려가 필요하다면 itertools 내장 모듈의 islice 메서드 고려(Better Way 36)