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]