파이썬

슬라이싱 (Slicing)

PGNV 2021. 5. 7. 09:51

라이싱 (Slicing)

슬라이싱(slicing)은 말그대로 특정 부분을 자르는 기능입니다.

num_string = '0123456789'
print(num_string)      #출력 0123456789
print(num_string[2])   #출력 2
print(num_string[5])   #출력 5
print(num_string[2:6]) #출력 2345
print(num_string[2:8]) #출력 234567
print(num_string[2:])  #출력 23456789
print(num_string[:8])  #출력 01234567
print(num_string[:])   #출력 0123456789

# 이런 건 아무것도 안나와요 st >= ed
print(num_string[0:0]) 
print(num_string[5:3])

조금 이상하게 느끼실 수도 있습니다. 왜 2부터 8까지인데 숫자는 2, 7으로 출력이 될까?

이와 관련하여는 폐구간, 개구간에 대해 알아야 하는데 넘어갑니다. 

슬라이싱은 총 4가지 종류가 있습니다.

  • [st : ed] : st부터 ed-1까지
  • [st :] : st부터 끝까지
  • [ : ed] : 처음부터 ed-1까지
  • [ : ] : 문자열 복사

음수로도 출력 가능

print(num_string[2:-1]) #출력 2345678
print(num_string[-4:])  #출력 6789
print(num_string[:4])   #출력 0123
nums = list(range(5))    # range는 파이썬에 구현되어 있는 함수이며 정수들로 구성된 리스트를 만듭니다
print (nums)        # 출력 "[0, 1, 2, 3, 4]"
print (nums[2:4])    # 인덱스 2에서 4(제외)까지 슬라이싱; 출력 "[2, 3]"
print (nums[2:])    # 인덱스 2에서 끝까지 슬라이싱; 출력 "[2, 3, 4]"
print (nums[:2])    # 처음부터 인덱스 2(제외)까지 슬라이싱; 출력 "[0, 1]"
print (nums[:])      # 전체 리스트 슬라이싱; 출력 ["0, 1, 2, 3, 4]"
print (nums[:-1])    # 슬라이싱 인덱스는 음수도 가능; 출력 ["0, 1, 2, 3]"
nums[2:4] = [8, 9] # 슬라이스된 리스트에 새로운 리스트 할당
print (nums)         # 출력 "[0, 1, 8, 9, 4]"

라이싱은 연속된 문자열을 가져오는 스킬입니다.

혹시 규칙성이 있는 문자열은 어떨까요? 마치 짝수번째 글자만 가져오기, 3의배수 글자만 가져오기 등 말입니다.

이런 내용은 다음과 같이 작성할 수 있습니다.

  • [st:ed:step] : st를 시작으로 ed까지 step만큼 띄어 슬라이싱

 

num_string = '0123456789'
print(num_string[2:8:2])  #출력 246
print(num_string[::-1])   #출력 9876543210
print(num_string[1:10:2]) #출력 13579
print(num_string[1::3])   #출력 147

데이터 분석 및 머신러닝/딥러닝에서는 슬라이싱이 매우 많을 예정이니 꼭 손에 익히시기 바랍니다.

 

 

 

'파이썬' 카테고리의 다른 글

리스트 (list)  (0) 2021.05.07
딕셔너리(dictionary)  (0) 2021.05.07
문자열(String) : 문자와 문장  (0) 2021.05.07
비교연산자  (0) 2021.05.07
불리언(Boolean) : 참과 거짓  (0) 2021.05.07