<개인공부>/[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으로 역방향 처리 가능
  • 전체 복사 또는 일부 삭제도 슬라이싱으로 가능

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

반응형