반응형
슬라이싱(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]은 리스트를 뒤집어 반환합니다.
반응형
'IT > Python Basic' 카테고리의 다른 글
[Python] 튜플, 딕셔너리, 집합 개념 정리 특집 (0) | 2025.02.28 |
---|---|
[python] 문자와 ASCII/Unicode 변환 - ord()와 chr() 함수 정리 (0) | 2025.02.27 |
[Python] 특집 개념 - translate 함수 (0) | 2025.02.24 |
[Python] 코딩테스트 필수 math 함수 개념 (0) | 2025.02.21 |
[python] 리스트 컴프리헨션 - n차원 리스트 (0) | 2025.02.20 |
[Python] 초급 개념20 - JSON 데이터 다루기 (json 모듈) (0) | 2025.02.20 |
[Python] 초급 퀴즈18 - 문자열 조작 (split, join, format, replace) (0) | 2025.02.20 |
[Python] 초급 퀴즈17 - 예외 처리 (try-except, raise, finally) (0) | 2025.02.19 |
댓글