파이썬 리스트 슬라이싱 완전 정복

Thank you for reading this post, don't forget to subscribe!

파이썬 리스트 슬라이싱 완전 정복

파이썬을 배우다 보면 리스트 슬라이싱은 꼭 알아야 할 핵심 개념 중 하나입니다. 오늘은 리스트 슬라이싱의 기본부터 고급 활용까지 완벽하게 정리해보겠습니다.

1. 슬라이싱 기본 문법

리스트 슬라이싱은 다음과 같은 문법을 사용합니다:

리스트[시작 인덱스 : 끝 인덱스]

예를 들어, 리스트의 2번째부터 4번째 요소를 가져오려면:

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

여기서 주의할 점은 끝 인덱스는 포함되지 않는다는 것입니다.

2. 음수 인덱스 활용

파이썬에서는 음수 인덱스를 사용하여 리스트의 끝에서부터 요소를 참조할 수 있습니다.

my_list = [10, 20, 30, 40, 50]
print(my_list[-3:])  # 출력: [30, 40, 50]

위 예제에서는 리스트의 마지막 3개 요소를 가져옵니다.

3. step을 활용한 슬라이싱

슬라이싱 문법에 step을 추가하여 일정 간격으로 요소를 가져올 수 있습니다:

리스트[시작 인덱스 : 끝 인덱스 : step]

예를 들어, 리스트에서 홀수 번째 요소만 가져오려면:

my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(my_list[::2])  # 출력: [1, 3, 5, 7, 9]

step을 음수로 지정하면 리스트를 역순으로 가져올 수 있습니다:

print(my_list[::-1])  # 출력: [9, 8, 7, 6, 5, 4, 3, 2, 1]

4. 리스트 복사와 얕은 복사

슬라이싱을 사용하여 리스트를 복사할 수 있습니다:

original = [1, 2, 3]
copy = original[:]
print(copy)  # 출력: [1, 2, 3]

이렇게 복사한 리스트는 원본과는 다른 객체이지만, 내부 요소가 리스트인 경우에는 얕은 복사가 이루어집니다.

5. 슬라이싱을 활용한 삽입과 삭제

슬라이싱을 사용하여 리스트의 특정 위치에 요소를 삽입하거나 삭제할 수 있습니다.

삽입 예제:

my_list = [1, 2, 5]
my_list[2:2] = [3, 4]
print(my_list)  # 출력: [1, 2, 3, 4, 5]

삭제 예제:

my_list = [1, 2, 3, 4, 5]
my_list[1:4] = []
print(my_list)  # 출력: [1, 5]

6. 리스트 뒤집기와 고급 활용

리스트를 뒤집는 가장 간단한 방법은 슬라이싱을 사용하는 것입니다:

my_list = [1, 2, 3, 4, 5]
reversed_list = my_list[::-1]
print(reversed_list)  # 출력: [5, 4, 3, 2, 1]

이런 슬라이싱은 매우 강력하며, 리스트 정렬 결과를 보존한 채 새로운 순서를 만들 때 유용합니다.

✔ 핵심은 이것!

  • 슬라이싱은 리스트의 복사, 삽입, 삭제, 뒤집기에 모두 사용 가능하다.
  • step 값과 음수 인덱스를 함께 쓰면 고급 조작도 가능하다.

실전 후기 & 팁

“처음엔 슬라이싱이 너무 헷갈렸어요. 특히 끝 인덱스가 포함되지 않는다는 게 왜 그런지 이해하기 어려웠죠.”

그런데 직접 리스트를 가지고 하나하나 실습하면서 print로 결과를 확인하니 퍼즐처럼 맞춰지는 기분이었어요.

제 팁은 무조건 직접 써보는 겁니다. 예시 따라치기보다, 내가 상상하는 데이터를 자르고 붙이면서 실험해보는 게 훨씬 빨라요.

✔ 실습 아이디어:

  • 숫자 리스트를 만들어서 짝수/홀수 요소만 추출
  • 문자열 리스트를 거꾸로 출력
  • 리스트 중간에 새로운 요소 삽입

FAQ

Q1. 슬라이싱의 끝 인덱스는 왜 포함되지 않나요?
A. 파이썬은 range()와 같은 다른 함수들과 일관성을 유지하기 위해 끝 인덱스를 포함하지 않습니다.
Q2. step 값을 0으로 지정할 수 있나요?
A. 불가능합니다. step이 0이면 ZeroDivisionError가 발생합니다.
Q3. 리스트가 아닌 문자열에도 슬라이싱이 되나요?
A. 네, 문자열은 시퀀스 타입이기 때문에 슬라이싱이 가능합니다.
Q4. 슬라이싱을 이용해 리스트를 완전히 비울 수 있나요?
A. 가능합니다. 예: my_list[:] = []
Q5. 슬라이싱을 활용한 깊은 복사는 가능한가요?
A. 불가능합니다. 슬라이싱은 얕은 복사만 지원하므로, 중첩 리스트의 경우 깊은 복사가 필요하면 copy 모듈을 사용하세요.

참고 자료 및 이미지

파이썬 슬라이싱 구조

마무리하며

리스트 슬라이싱은 파이썬을 제대로 이해하기 위한 관문입니다.

그 자체가 하나의 언어처럼 작동하기 때문에, 익숙해지면 여러분의 코드가 더욱 간결하고, 읽기 쉬워질 겁니다.

오늘 하루, 슬라이싱을 완전히 마스터한 당신. 그거면 충분합니다.

이 글이 어땠는지 평가해 주세요!

★ ★ ★ ★ ★

HANSORI.AI_Blog Labs에서 더 알아보기

구독을 신청하면 최신 게시물을 이메일로 받아볼 수 있습니다.