Python
4.2.2 슬라이싱
수현조
2024. 11. 29. 10:41
파이썬 슬라이싱(Slicing) 정리
슬라이싱은 문자열, 리스트 등에서 특정 부분을 추출하는 기능입니다.
"데이터를 자르는 것"이라고 이해하면 쉬워요.
1. 문자열 슬라이싱
기본 문법
문자열[시작:끝:단계]
- 시작: 어디서부터 잘라낼지 (포함).
- 끝: 어디까지 잘라낼지 (포함하지 않음).
- 단계: 몇 칸씩 건너뛸지 (기본값은 1).
예시 1: 문자열 일부 추출
text = "Python"
print(text[0:2]) # 출력: 'Py'
print(text[2:]) # 출력: 'thon'
print(text[:4]) # 출력: 'Pyth'
예시 2: 음수 인덱스 사용
- 음수 인덱스는 문자열의 뒤에서부터 위치를 셉니다.
print(text[-1]) # 출력: 'n' (마지막 글자)
print(text[-3:]) # 출력: 'hon' (뒤에서 세 번째부터 끝까지)
print(text[:-2]) # 출력: 'Pyth' (처음부터 뒤에서 두 번째 전까지)
예시 3: 전체 복사
- 슬라이싱에서 시작과 끝을 생략하면 전체를 가져옵니다.
print(text[:]) # 출력: 'Python'
예시 4: 문자열 뒤집기
- 단계를 -1로 설정하면 문자열을 뒤집을 수 있습니다.
print(text[::-1]) # 출력: 'nohtyP'
문자열 조합 응용
예시: 문자열의 특정 단어를 다른 단어로 변경하기
text = "Hello, World!"
new_text = text[:7] + "Python!"
print(new_text) # 출력: 'Hello, Python!'
2. 리스트 슬라이싱
리스트에서도 문자열처럼 슬라이싱을 사용할 수 있습니다.
기본 문법
리스트[시작:끝:단계]
예시 1: 리스트 일부 추출
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(numbers[:5]) # 출력: [1, 2, 3, 4, 5]
print(numbers[5:]) # 출력: [6, 7, 8, 9, 10]
print(numbers[3:7]) # 출력: [4, 5, 6, 7]
예시 2: 음수 인덱스 사용
print(numbers[-3:]) # 출력: [8, 9, 10] (뒤에서 세 번째부터 끝까지)
print(numbers[:-5]) # 출력: [1, 2, 3, 4, 5] (처음부터 뒤에서 다섯 번째 전까지)
예시 3: 리스트 뒤집기
print(numbers[::-1]) # 출력: [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
리스트와 슬라이싱 응용
예시: 리스트의 일부만 추출
fruits = ["apple", "banana", "cherry", "mango", "orange"]
print(fruits[:2]) # 출력: ['apple', 'banana'] (처음 두 개)
print(fruits[2:]) # 출력: ['cherry', 'mango', 'orange'] (2번부터 끝까지)
print(fruits[-2:]) # 출력: ['mango', 'orange'] (마지막 두 개)
리스트 복사
- 리스트 전체를 복사하려면 슬라이싱을 이용하세요.
copied = numbers[:]
print(copied) # 출력: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
중첩 리스트와 슬라이싱
리스트 안에 리스트가 있는 경우에도 슬라이싱을 사용할 수 있습니다.
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
# 첫 번째 리스트 가져오기
print(matrix[0]) # 출력: [1, 2, 3]
# 첫 번째 리스트의 첫 번째 요소
print(matrix[0][0]) # 출력: 1
3. 단계(Step) 활용
슬라이싱에서 **단계(Step)**를 지정하면, 데이터를 건너뛰며 가져올 수 있습니다.
예시 1: 2칸씩 건너뛰기
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(numbers[::2]) # 출력: [1, 3, 5, 7, 9]
예시 2: 거꾸로 3칸씩 건너뛰기
print(numbers[::-3]) # 출력: [10, 7, 4, 1]
4. 슬라이싱 정리
기능 | 문법 | 설명 | 예시 결과 |
기본 슬라이싱 | 시퀀스[시작:끝] | 시작부터 끝까지 잘라냄 | "Python"[1:4] → 'yth' |
음수 인덱스 사용 | 시퀀스[-시작:] | 뒤에서부터 자르기 | "Python"[-3:] → 'hon' |
전체 복사 | 시퀀스[:] | 데이터 전체 복사 | "Python"[:] → 'Python' |
거꾸로 뒤집기 | 시퀀스[::-1] | 데이터를 뒤집음 | "Python"[::-1] → 'nohtyP' |
단계 지정 | 시퀀스[::단계] | 지정한 단계만큼 건너뜀 | [1, 2, 3, 4][::2] → [1, 3] |