스트라이드와_슬라이스

매일 공부(ML)·2022년 6월 4일
0

이어드림

목록 보기
66/146

스트라이드와 슬라이스를 한 식에 함께 사용하지 말라

스트라이드

  • 일정한 간격을 두고 슬라이싱
  • 리스트[시작:끝:증가값]
  • 매 n번째 원소만 가져올 수 있다.
x = ['빨강','주황','노랑','초록','파랑','자주']
odds = x[::2]
evens = x[1::2]
print(odds) #['빨강','주황','노랑']
print(evens) #['주황','초록','자주']
  • -1 증가값을 통해서 바이트와 유니코드 문자열을 역으로 뒤집는다.

    • 유니코드 데이터를 UTF-8로 인코딩한 경우는 작동하지 않는다.
x = b'mongoose'
y = x[::-1]
print(y)
#b'esoognom'

스트라이드와 슬라이스를 같이 쓰면 안되는 이유

  1. 코드의 밀도가 높아져서 읽기가 어렵다.

  2. 증가값에 따라서 시작값과 끝값이 어떤 역할을 하는지 불분명하고, 특히 증가값이 음수인 경우 더 심하다.


대책

  1. 증가값을 사용하는 경우 양수로 이용하고 시작과 끝 인덱스를 생략하라.

  2. 시직이나 끝 인덱스를 증가값과 함께 사용해야한다면, 스트라이딩한 결과를 변수에 대입한 다음 슬라이싱하라.

  3. 스트라이딩한 다음 슬라이싱을 하면 한 번 더 얕게 복사가 된다.

  • 슬라이스의 크기를 가능한 줄여야한다.
  • 시간과 메모리를 감당할 수 없다면 itertools의 islice메서드 활용
y = x[::2]
z = y[1:-1]
profile
성장을 도울 아카이빙 블로그

0개의 댓글