[Python] 리스트 슬라이싱

cdwde·2021년 5월 6일
0

🎈 slicing

  • 연속적인 객체들에 범위를 지정해서 선택한 객체를 가져오는 방법
  • 슬라이싱을 하면 새로운 객체를 생성

l[start:end:stride]

  • start: 슬라이싱을 시작할 위치
  • end: 슬라이싱을 끝낼 위치 (end 포함하지 않음)
  • stride(step): 간격
    (양수일 때 - 오른쪽으로 step만큼 이동 / 음수일 때 - 왼쪽으로 step만큼 이동)

예제

1. 특정 시작 위치부터 끝까지

l = [1, 2, 3, 4, 5]
print(l[1:])

#출력 결과
#[2, 3, 4, 5]

2. 시작점부터 특정 위치까지

l = [1, 2, 3, 4, 5]
print(l[:2])

#출력 결과
#[1, 2]

3. stride(step) 사용하기

l = [1, 2, 3, 4, 5]
print(l[::2])

#출력 결과
#[1, 3, 5]

4. 전체 가져오기 (리스트 전체를 복사하는 것과 동일, 얕은 복사)

l = [1, 2, 3, 4, 5]
print(l[::])

#출력 결과
#[1, 2, 3, 4, 5]

5. 역순으로 가져오기

l = [1, 2, 3, 4, 5]
print(l[::-1])

#출력 결과
#[5, 4, 3, 2, 1]

🎈 Better way

  • stride를 사용해야 한다면 양수 값을 사용하고 start와 end 인덱스 생략하는게 좋음

  • 음수 stride 피하기

  • stride를 꼭 start나 end 인덱스와 함께 사용해야 한다면
    stride를 적용한 결과를 변수에 할당하고 이 변수를 슬라이스한 결과를 다른 변수에 할당해서 사용


참고
https://twpower.github.io/119-python-list-slicing-examples
https://mino-park7.github.io/effective%20python%20study/2018/09/09/betterway6-do-not-use-start-end-stride-simul/

0개의 댓글