파이썬 리스트 음수 인덱스 슬라이싱 원리 및 원소 출력 결과 완벽 정리
주어진 리스트 fruits = ['체리', '사과', '수박', '딸기', '키위']에서 print(fruits[-4:-1])의 결과는 ['사과', '수박', '딸기'], print(fruits[:-3])은 ['체리', '사과'], print(fruits[-3:])은 ['수박', '딸기', '키위']입니다. 파이썬의 음수 인덱스는 리스트의 뒤에서부터 -1, -2, -3 순서로 번호를 매기며, 슬라이싱 구문 list[start:stop]에서 stop 인덱스 바로 전까지만 추출된다는 원리만 이해하면 누구나 쉽게 계산할 수 있습니다.
핵심 요약: 파이썬 리스트 슬라이싱에서 음수 인덱스는 맨 뒤 원소가 -1입니다. 슬라이싱 [a:b]는 인덱스 a부터 시작하여 b 직전(b-1)까지를 포함하므로, 시작 범위와 끝 범위의 포함 여부를 정확히 구분하는 것이 핵심입니다.
1. 파이썬 음수 인덱스 위치 매핑 및 3가지 슬라이싱 공식
파이썬 슬라이싱 규칙을 빠르게 이해할 수 있는 3가지 기초 개념입니다.
- 음수 인덱스 번호 매기기: 맨 마지막 원소가
-1이며, 왼쪽으로 갈수록-2, -3, -4, -5순으로 커집니다. (예: '키위'=-1, '딸기'=-2, '수박'=-3, '사과'=-4, '체리'=-5) - 슬라이싱 종료 시점(Exclusive):
[start:stop]구조에서stop위치의 원소는 포함되지 않으며 그 바로 직전 원소까지만 잘라냅니다. - 시작/끝 생략 규칙:
[:stop]처럼 시작을 생략하면 처음(0번/음수 맨 앞)부터 추출하고,[start:]처럼 끝을 생략하면 맨 마지막 원소까지 모두 포함합니다.
2. 질문하신 예제 3가지 슬라이싱 완벽 비교 분석
질문해주신 리스트 fruits = ['체리', '사과', '수박', '딸기', '키위'] 기준의 출력값 비교표입니다.
| 슬라이싱 구문 | 인덱스 범위 해석 | 최종 출력 결과 |
|---|---|---|
fruits[-4:-1] |
인덱스 -4('사과')부터 -1('키위') 직전(-2 '딸기')까지 | ['사과', '수박', '딸기'] |
fruits[:-3] |
처음(0번 '체리')부터 -3('수박') 직전(-4 '사과')까지 | ['체리', '사과'] |
fruits[-3:] |
인덱스 -3('수박')부터 맨 끝('키위')까지 모두 포함 | ['수박', '딸기', '키위'] |
파이썬 공식 문서의 시퀀스 타입 슬라이싱 가이드는 Python 공식 문서에서 확인하실 수 있습니다.
Python 공식 문서 리스트 및 슬라이싱 안내 바로가기
3. 음수 슬라이싱 손쉽게 푸는 실전 3단계 공식
헷갈리는 음수 인덱스 슬라이싱 문제를 혼자서 쉽게 계산하는 방법입니다.
- 리스트에 인덱스 써두기: 리스트 원소 아래에 양수 인덱스(0, 1, 2...)와 음수 인덱스(-5, -4, -3, -2, -1)를 각각 매핑합니다.
- start와 stop 위치 잡기:
[start:stop]에서 start 항목을 먼저 선택하고, stop으로 지정된 항목 바로 '앞'까지만 범위를 지정합니다. - 생략된 부분 확인: 콜론(:) 앞이나 뒤가 비어있다면 리스트의 맨 처음이나 맨 끝까지 연장하여 결과를 도출합니다.
결론적으로, 파이썬 음수 인덱스는 맨 오른쪽 원소를 -1로 두고 왼쪽으로 오면서 -2, -3으로 계산하며, 슬라이싱 시 끝 지점으로 지정한 인덱스의 직전까지만 포함된다는 법칙만 기억하시면 모든 문제를 쉽게 해결할 수 있습니다.
참고 문헌 및 출처
- Python Software Foundation - Sequence Types (list, tuple, range) Slicing Guide
- 파이썬 코딩 도장 - 리스트 슬라이싱 및 음수 인덱스 활용법

0개의 덧글:
댓글 쓰기
에 가입 댓글 [Atom]
<< 홈