12. 스트라이드와 슬라이스를 한 식에 함께 사용하지 않기
스트라이드를 사용하면 시퀀스를 슬라이싱하면서 매 n 번째 원소만 가져올 수 있다.
Ex)
x = ['빨강', '주황', '노랑', '초록', '파랑', '자주']
// 시작부터 매 두 번째 원소를 선택
odds = x[::2]
>>['빨강', '노랑', '파랑']
evens = x[1::2]
>>['주황', '초록', '자주']
그러나 종종 예기치 못한 동작이 일어나서 버그를 야기한다.
일반적으로 바이트 문자열을 뒤집는 가장 일반적인 기법은 -1을 증가값으로 사용해 문자열을 슬라이싱하는 것이다.
유니코드 문자열에서도 잘 작동한다.
하지만 유니코드 데이터를 UTF-8로 인코딩한 문자열에서는 이 코드가 작동하지 않는다.
-1 말고 다른 음수도 확인해보자
x = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
x[::2] = ['a', 'c', 'e', 'g']
x[::-2] = ['h', 'f', 'd', 'b']
x[2::2] = ['c', 'e', 'g']
x[-2::-2] = ['g', 'e', 'c', 'a']
x[-2:2:-2] = ['g', 'e']
x[2:2:-2] = []
슬라이싱 구문에 스트라이딩까지 들어가면 아주 혼란스럽다.
게다가 증가값에 따라 시작값과 끝값이 어떤 역할을 하는지 불분명하다.
따라서 시작값이나 끝값을 증가값과 함께 사용하지 말 것을 권장한다.
세 파라미터를 모두 사용하는 경우, 두 번 대입을 사용(한 번은 스트라이딩, 한 번은 슬라이싱)하거나 itertools 내장 모듈인 islice 사용
본 블로그는 [파이썬 코딩의 기술] 서적을 참고하여 작성하였습니다.
반응형
'SW ENGINEERING > Python' 카테고리의 다른 글
파이썬 코딩의 기술TIP 14일차 (0) | 2021.08.16 |
---|---|
파이썬 코딩의 기술TIP 13일차 (0) | 2021.08.11 |
파이썬 코딩의 기술TIP 11일차 (0) | 2021.07.02 |
파이썬 코딩의 기술TIP 10일차 (0) | 2021.06.18 |
파이썬 코딩의 기술TIP 9일차 (0) | 2021.06.14 |
최근댓글