<개인공부>/[Python]

[Python] 파이썬 리스트 슬라이싱 정리 ([start:end:step] 완전 이해)

BlockDMask 2025. 4. 29. 15:41

안녕하세요. BlockDMask 입니다.
오늘은 파이썬에서 리스트를 원하는 구간만 잘라서 다루는 방법, 슬라이싱(Slicing)에 대해 정리해보겠습니다.
특히 초보자가 헷갈리기 쉬운 start, end, step 개념을 정확히 짚어가면서 설명하겠습니다.



0. 슬라이싱 기본 문법과 개념

  • 슬라이싱 문법: list[start:end:step]
  • start : 가져올 시작 인덱스 (포함)
  • end : 가져올 끝 인덱스 (포함하지 않음)
  • step : 간격 (기본은 1)

※ 인덱스는 0번부터 시작합니다.
※ end 인덱스는 가져오지 않고, 직전까지만 포함합니다.
※ step을 생략하면 기본값 1이 적용됩니다.



1. 기본 슬라이싱 (start:end)

numbers = [11, 22, 33, 44, 55, 66]
print(numbers[1:4])  # [22, 33, 44]

설명:
- 1번 인덱스(22)부터 4번 인덱스 직전(3번 44)까지 가져옵니다.
- 4번 인덱스(55)는 포함되지 않습니다.



2. start 또는 end 생략하기

numbers = [11, 22, 33, 44, 55, 66]
print(numbers[:3])   # [11, 22, 33]
print(numbers[2:])   # [33, 44, 55, 66]

설명:
- [:3]는 처음부터 3번 인덱스 직전까지 (0,1,2번)
- [2:]는 2번 인덱스(33)부터 끝까지 모두 가져옵니다.



3. step 사용하기 (start:end:step)

numbers = [11, 22, 33, 44, 55, 66]
print(numbers[0:6:2])  # [11, 33, 55]

설명:
- 0번(11)부터 6번 인덱스 직전까지 2칸씩 건너뛰며 가져옵니다.
- 0 → 2 → 4번 인덱스 요소를 가져온 결과입니다.



4. step만 사용하는 경우

numbers = [11, 22, 33, 44, 55, 66]
print(numbers[::3])  # [11, 44]

설명:
- start와 end를 생략하고 step=3만 지정.
- 0번(11), 3번(44) 인덱스 요소를 가져옵니다.



5. 음수 인덱스 사용하기 (뒤에서부터 세기)

numbers = [11, 22, 33, 44, 55, 66]
print(numbers[-4:-1])  # [33, 44, 55]

설명:
- -4번 인덱스(33)부터 -1번 인덱스 직전(-2번 55)까지 가져옵니다.
- 음수 인덱스는 리스트 뒤에서부터 셉니다.



6. 음수 step 사용 (역순 슬라이싱)

numbers = [11, 22, 33, 44, 55, 66]
print(numbers[::-1])  # [66, 55, 44, 33, 22, 11]

설명:
- step을 -1로 설정하면 리스트가 뒤집힙니다.
- 데이터를 역순으로 정렬할 때 사용합니다.



7. 특정 구간을 역순으로 가져오기

numbers = [11, 22, 33, 44, 55, 66]
print(numbers[5:2:-1])  # [66, 55, 44]

설명:
- 5번 인덱스(66)부터 2번 인덱스(33) 직후까지 역순으로 가져옵니다.
- 음수 step을 사용할 때는 start > end 여야 합니다.



8. 리스트 전체 복사 ([:] 사용)

numbers = [11, 22, 33, 44, 55, 66]
copy_numbers = numbers[:]
print(copy_numbers)  # [11, 22, 33, 44, 55, 66]

설명:
- [:]를 쓰면 리스트를 통째로 복사할 수 있습니다.
- 복사본을 수정해도 원본에는 영향을 주지 않습니다.



9. 짝수 인덱스 요소만 가져오기

numbers = [11, 22, 33, 44, 55, 66]
even_numbers = numbers[::2]
print(even_numbers)  # [11, 33, 55]

설명:
- 0번(11), 2번(33), 4번(55)처럼 짝수 인덱스만 골라 가져옵니다.
- 데이터 샘플링할 때 유용합니다.



10. 슬라이싱으로 리스트 비우기

numbers = [11, 22, 33, 44, 55, 66]
numbers[0:] = []
print(numbers)  # []

설명:
- 리스트 전체 범위에 빈 리스트를 대입해 모든 요소를 삭제합니다.
- 리스트를 비우거나 초기화할 때 사용합니다.



결론

  • [start:end]로 원하는 구간 추출 가능 (start 포함, end 미포함)
  • [start:end:step]으로 간격 조절 가능
  • 음수 인덱스, 음수 step으로 역방향 처리 가능
  • 전체 복사 또는 일부 삭제도 슬라이싱으로 가능

이상, 파이썬 리스트 슬라이싱 완전 정리에 대해 알아보았습니다.
오늘도 읽어주셔서 감사합니다.