본문 바로가기
IT/Python Basic

[Python] 슬라이싱 특집 - 기본부터 고급 활용까지

by Echinacea 2025. 2. 20.
반응형

 

슬라이싱(Slicing)은 파이썬에서 리스트, 문자열, 튜플 등의 시퀀스 자료형을 효율적으로 다룰 수 있도록 해주는 강력한 기능입니다. 이를 활용하면 데이터를 쉽게 추출, 변경, 변형할 수 있으며, 메모리 사용도 최적화할 수 있습니다. 이 문서에서는 슬라이싱 개념을 기초부터 고급 활용까지 차근차근 살펴보겠습니다.


 

 

🔹 1. 기본적인 리스트 슬라이싱

리스트에서 슬라이싱을 사용하면 특정 범위의 요소를 쉽게 추출할 수 있습니다.

 

✅ 예제 1: 기본적인 리스트 슬라이싱

numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(numbers[2:5])  # [2, 3, 4]

 

📌 설명:

  • numbers[2:5]는 인덱스 2부터 4까지의 요소를 가져옵니다.
  • 종료 인덱스(5)는 포함되지 않음에 유의하세요.

 

✅ 예제 2: 리스트의 끝에서부터 슬라이싱

print(numbers[-3:])  # [7, 8, 9]

 

📌 설명:

  • numbers[-3:]는 리스트의 마지막 3개의 요소를 가져옵니다.
numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(numbers[2:5])  # [2, 3, 4]

 

📌 설명:

  • numbers[2:5]는 인덱스 2부터 4까지의 요소를 가져옵니다.
  • 종료 인덱스(5)는 포함되지 않음에 유의하세요.

 

✅ 예제 2: step을 활용한 슬라이싱

print(numbers[::2])  # [0, 2, 4, 6, 8]

 

📌 설명:

  • numbers[::2]는 인덱스 0부터 2칸씩 건너뛰며 요소를 추출합니다.

 

 

🔹 2. 문자열에서의 슬라이싱

문자열도 리스트처럼 슬라이싱이 가능합니다.

 

✅ 예제 3: 문자열 슬라이싱

text = "Hello, Python!"
print(text[:5])  # 'Hello'
print(text[-7:])  # 'Python!'

 

📌 설명:

  • text[:5]는 처음부터 5번째 문자까지 추출합니다.
  • text[-7:]는 뒤에서 7번째부터 끝까지 출력합니다.

 

✅ 예제 4: 문자열에서 홀수 번째 문자만 추출

print(text[::2])  # 'Hlo yhn'

 

📌 설명:

  • text[::2]는 2칸씩 건너뛰며 홀수 번째 문자를 추출합니다.
text = "Hello, Python!"
print(text[:5])  # 'Hello'
print(text[-7:])  # 'Python!'

 

📌 설명:

  • text[:5]는 처음부터 5번째 문자까지 추출합니다.
  • text[-7:]는 뒤에서 7번째부터 끝까지 출력합니다.

 

 

🔹 3. 튜플에서의 슬라이싱

튜플은 불변(immutable)하지만, 슬라이싱을 통해 특정 부분을 추출할 수 있습니다.

 

✅ 예제 4: 튜플 슬라이싱

tuple_data = (10, 20, 30, 40, 50)
print(tuple_data[1:4])  # (20, 30, 40)

 

📌 설명:

  • tuple_data[1:4]는 인덱스 1부터 3까지의 요소를 포함한 새로운 튜플을 반환합니다.

 

✅ 예제 5: 튜플을 역순으로 출력

print(tuple_data[::-1])  # (50, 40, 30, 20, 10)

 

📌 설명:

  • tuple_data[::-1]는 튜플을 역순으로 출력합니다.
tuple_data = (10, 20, 30, 40, 50)
print(tuple_data[1:4])  # (20, 30, 40)

 

📌 설명:

  • tuple_data[1:4]는 인덱스 1부터 3까지의 요소를 포함한 새로운 튜플을 반환합니다.

 

 

🔹 4. 다차원 배열에서의 슬라이싱 (numpy 활용)

배열 라이브러리인 numpy를 활용하면 다차원 배열에서도 슬라이싱을 적용할 수 있습니다.

 

✅ 예제 5: 2차원 배열에서 행과 열 슬라이싱

import numpy as np

matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(matrix[:2, 1:])  # [[2, 3], [5, 6]]

 

📌 설명:

  • matrix[:2, 1:]는 첫 번째와 두 번째 행의 1열부터 끝까지 추출합니다.

 

✅ 예제 6: 특정 열만 선택

print(matrix[:, 1])  # [2, 5, 8]

 

📌 설명:

  • matrix[:, 1]는 모든 행에서 두 번째 열을 선택합니다.
import numpy as np

matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(matrix[:2, 1:])  # [[2, 3], [5, 6]]

 

📌 설명:

  • matrix[:2, 1:]는 첫 번째와 두 번째 행의 1열부터 끝까지 추출합니다.

 

 

🔹 5. slice() 객체를 활용한 고급 슬라이싱

slice() 객체를 사용하면 가독성이 좋은 슬라이싱을 수행할 수 있습니다.

 

✅ 예제 6: slice()를 활용한 슬라이싱

s = slice(1, 5, 2)
numbers = [0, 1, 2, 3, 4, 5, 6]
print(numbers[s])  # [1, 3]

 

📌 설명:

  • slice(1, 5, 2)는 인덱스 1부터 5까지 2칸씩 건너뛰며 요소를 추출하는 슬라이싱 객체입니다.

 

✅ 예제 7: slice()를 활용한 문자열 슬라이싱

text = "abcdefg"
s = slice(0, 5, 2)
print(text[s])  # 'ace'

 

📌 설명:

  • slice(0, 5, 2)는 문자열에서 0부터 5까지 2칸씩 건너뛰며 추출합니다.
s = slice(1, 5, 2)
numbers = [0, 1, 2, 3, 4, 5, 6]
print(numbers[s])  # [1, 3]

 

📌 설명:

  • slice(1, 5, 2)는 인덱스 1부터 5까지 2칸씩 건너뛰며 요소를 추출하는 슬라이싱 객체입니다.

 

 

🔹 6. 슬라이싱을 활용한 데이터 변형 및 최적화

슬라이싱을 활용하면 리스트의 특정 부분을 쉽게 수정할 수도 있습니다.

 

✅ 예제 7: 리스트 일부 변경

numbers = [0, 1, 2, 3, 4, 5]
numbers[2:4] = [99, 100]
print(numbers)  # [0, 1, 99, 100, 4, 5]

 

📌 설명:

  • numbers[2:4] = [99, 100]을 통해 리스트의 일부 값을 변경할 수 있습니다.

 

✅ 예제 8: 리스트의 일부 삭제

numbers = [10, 20, 30, 40, 50]
numbers[1:3] = []
print(numbers)  # [10, 40, 50]

 

📌 설명:

  • numbers[1:3] = []을 사용하여 특정 구간의 요소를 삭제할 수 있습니다.
numbers = [0, 1, 2, 3, 4, 5]
numbers[2:4] = [99, 100]
print(numbers)  # [0, 1, 99, 100, 4, 5]

 

📌 설명:

  • numbers[2:4] = [99, 100]을 통해 리스트의 일부 값을 변경할 수 있습니다.

 

 

✅ 예제 8: 리스트를 역순으로 정렬

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

 

📌 설명:

  • numbers[::-1]은 리스트를 뒤집어 반환합니다.

 

반응형

댓글