Python - Slicing(슬라이싱) - 연속적인 객체들의 요소를 가져오자

컴퓨터/Python

728x90
반응형

Python의 Slicing

파이썬에서는 슬라이싱이라는 문법을 제공하고 있습니다. 슬라이싱을 직역하자면 자르다, 썰다의 의미를 가지고 있으며 파이썬 내에서 이 슬라이싱의 문법, 기법은 연속적인 데이터, 또는 개체들을 모은 자료구조 (대표적으로 리스트, 튜플, 문자열 등)에서 각각의 요소들을 쉽게 가져오기 위한 표기법입니다.

 

 

본 포스트는 아래와 같은 리스트 형태의 자료구조가 있다고 가정해 보도록 하겠습니다.

List  = [1,2,3,4,5,6,7,8,9,10]

기본 형태 

슬라이싱을 사용한다는 것은 결국 연속적인 형태로 저장된 자료구조를 어디서부터 어떻게 자르고 가지고 오는지의 표기법입니다. 기본적으로 표기를 하기 위한 구조는 아래와 같습니다.

List[Start:End:Step]
  • 중괄호 [  ]를 이용하여 슬라이싱 표기법을 사용하기 위한 준비를 합니다.
  • Start : 즉, 자르기를 시작할  index의 위치를 지정합니다.
  • End : 즉, 자르기를 끝낼 index의 위치를 지정합니다. 이때 End의 값은 포함되지 않습니다. 
  • Step(Option) : 특정 단위로 잘라서 가지고 오기 위해서 사용합니다. 옵션 값으로 지정이 없어도 됩니다.

그렇다면 실제 슬라이싱 기법을 사용해서 List의 특정 값을 가지고 와보도록 하겠습니다.

List  = [1,2,3,4,5,6,7,8,9,10]

#List의 index 1 에서 5미만 까지 자른 값
print(List[1:5]) #[2,3,4,5]

#List의 index 0 에서 5미만 까지 자른 값
List_A = List[0:5]
print(List_A) #[1,2,3,4,5]

#List의 index 3에서 3미만까지 자른 값
List_B = List[3:3]
print(List_B) #[] 없기 때문에 결과 값은 다음과 같습니다.

#List의 index 3에서 4미만까지 자른 값
List_C = List[3:4] 
print(List_C) # [4]

위처럼 시작(Start)과 끝(End)을 지정함으로써 연속된 자료구조의 데이터를 손쉽게 가지고 와서 이용할 수 있습니다.

주의할 점은 끝(End)의 값은 포함하지 않습니다.

 

형태 2 - Start 또는 End가 하나만 존재하는 형태

리스트 등 다양한 자료구조에서 값을 추출할 때 Start 또는 End의 값을 생략하면 아래와 같은 효과를 얻을 수 있습니다.

  • 시작부터 N번 째 까지
  • N번 째부터 마지막까지
List  = [1,2,3,4,5,6,7,8,9,10]

#시작부터 N번째 까지
print(List[:2]) #[1.2]

#N번 부터 마지막 까지
print(List[7:]) #[8,9,10]

형태 3 - 마이너스 인덱싱 

파이썬에서는 -를 이용한 인덱싱 기법이 가능합니다. 

  • -1 인덱스는 마지막 인덱스를 가리킵니다. 
  • -2 인덱스는 마지막 이전의 인덱스를 가르킵니다.

이 내용을 잘 살펴보면 -인덱스와 슬라이싱을 사용하면 형태 2와는 반대의 값을 추출할 수 있습니다.

  • 끝이 되기 전 N번째 부터 끝까지
  • 시작부터 끝이 되기전 N까지
List  = [1,2,3,4,5,6,7,8,9,10]

#끝이 되기전 N번째 부터 끝까지
print(List[-3:]) #[8,9,10]

#시작부터 끝이 되기전 N까지
print(List[:-3]) #[1,2,3,4,5,6,7]

형태 4 - Step 옵션 사용하기

Step 옵션을 사용하면 말 그대로 Step의 효과 또는 방향의 효과를 줄 수 있습니다.

대표적인 예시를 들자면 아래와 같습니다.

  • N번씩 건너뛰며 값을 가지고 온다.
  • 방향을 바꾸며 가지고 온다.
List  = [1,2,3,4,5,6,7,8,9,10]

#N번 씩 건너뛰며 값을 가지고 오기
print(List[0::3]) #[1,4,7,10]

#거꾸로 값을 가지고 오기
print(List[10::-1]) #[10,9,8,7,6,5,4,3,2,1]
print(List[:0:-1]) #[10,9,8,7,6,5,4,3,2]
print(List[3::-1]) #[4,3,2,1]

본 포스트에서는 다양한 슬라이싱 기법의 예시와 사용법에 대해 알아보았습니다.

728x90
반응형

'컴퓨터 > Python' 카테고리의 다른 글

Python - 함수(Function)  (0) 2021.11.18
Python - 주석 (Comment)  (0) 2021.11.16
Python - while (반복문)  (0) 2021.11.01
Python - format  (0) 2021.10.03
Python - 입력값 받기 / input()함수  (1) 2021.09.28

Commnet

G91개발일지

Gon91(지구일)

91년생 공학엔지니어의 개발일지

TODAY :

YESTER DAY :

TOTAL :