Python slicing

정길규·2023년 5월 13일

사용법

a 라는 연속적인 객체인 자료구조(리스트, 튜플, 문자열...)가가 있다고 가정했을때.

a[start : end : step]

  • start : 슬라이싱을 시작하는 위치 (0부터 시작)
  • end : 슬라이싱을 끝내는 위치 (end는 포함하지 않음.)
  • step : 자료를 몇개씩 끊어서 가져올지와 방향을 설정

예제

특정 시작위치에서 끝까지 가져오기

  • a[start : ]
a = [1, 2, 3, 4, 5]

print(a[1:])  # [2, 3, 4, 5]
print(a[3:])  # [4, 5]
print(a[-3:]) # [3, 4, 5]

시작점 부터 특정 위치까지 가져오기

  • a[ : end]
a = [1, 2, 3, 4, 5]

print(a[:3])   # [1, 2, 3]
print(a[:-3])  # [1, 2] 

특정 시작위치에서 특정 위치까지 모두 가져오기

  • a[start : end]
a = [1, 2, 3, 4, 5]

print(a[2:4])    # [3, 4]
print(a[-4:-2])  # [2, 3]

step 활용

  • a[start : end : step]
  • step이 양수 일 때 오른쪽으로 step만큼 이동하면서 가져온다.
  • step이 음수 일 때 왼쪽으로 step만큼 이동하면서 가져온다.
a = [1, 2, 3, 4, 5]

# 오른쪽으로 step만큼 이동하면서 가져온다.
print(a[::2])   # [1, 3, 5]
print(a[-4::2]) # [2, 4]
a = [1, 2, 3, 4, 5]

# 왼쪽으로 step만큼 이동하면서 가져온다.
print(a[::-1])  # [5, 4, 3, 2, 1]
print(a[::-2])  # [5, 3, 1]
a = [1, 2, 3, 4, 5]

print(a[5:1:-1]) # [5, 4, 3]
print(a[3::-1])  # [4, 3, 2, 1]

이렇게 거꾸로 출력할 때에는 start, end 값도 왼쪽위치 값부터 입력해저야 한다.

0개의 댓글