Python에서 목록을 분할하는 방법(인덱스, 단계 및 반전)

강력한 대괄호 구문을 사용하여 Python에서 목록을 분할하는 방법을 알아보세요. 마스터 시작, 중지 및 단계 인수, 음수 인덱싱 및 반전 목록.

Editor에서 이 솔루션을 사용해 보세요.

개요

슬라이싱은 Python의 가장 직관적이고 강력한 기능 중 하나이며, 깨끗하고 간결한 구문으로 목록, 튜플 또는 문자열의 하위 집합을 추출할 수 있게 해줍니다. 목록에서 특정 요소를 복사하기 위해 장황한 루프를 작성하는 대신 Python의 슬라이스 표기법을 사용하면 대괄호 안에 인덱스 범위를 지정할 수 있습니다.

리스트 슬라이싱의 전체 구문은 `my_list[start:stop:step]`입니다. 'start' 인덱스는 포함되고, 'stop' 인덱스는 제외되며, 'step'은 요소 간의 증분을 정의합니다(기본값은 1). `start`를 생략하면 Python은 기본적으로 목록의 시작 부분으로 설정됩니다. `stop`을 생략하면 Python은 기본적으로 목록의 끝으로 설정됩니다. 이는 컬렉션의 일부 추출을 매우 효과적으로 만듭니다.

슬라이싱은 음수 인덱스를 지원하므로 매우 다재다능합니다. 음수 시작 또는 중지 인덱스는 목록의 끝에서부터 뒤로 계산됩니다('-1'은 마지막 항목을 나타냄). `my_list[::-1]`과 같은 음수 단계 값을 설정하면 목록의 역방향 복사본을 빠르게 검색할 수 있습니다. 깨끗한 데이터 추출을 위해서는 슬라이스 범위를 이해하는 것이 필수적입니다.

코드 및 실행 출력

이 스크립트는 다양한 시작, 중지, 단계 범위, 음수 인덱싱 및 목록 반전을 사용하는 목록 분할을 보여줍니다.

numbers = [0, 10, 20, 30, 40, 50, 60, 70, 80]

# 1. Basic slicing: elements from index 2 up to (but excluding) 6
subset = numbers[2:6]
print("Subset [2:6]:", subset)

# 2. Omitting indices: start to index 4, and index 5 to end
first_five = numbers[:5]
last_four = numbers[5:]
print("First five [:5]:", first_five)
print("Last four [5:]:", last_four)

# 3. Using a step parameter: get every second element
every_second = numbers[::2]
print("Every second [::2]:", every_second)

# 4. Negative indexing: get the last three elements
last_three = numbers[-3:]
print("Last three [-3:]:", last_three)

# 5. Reverse the list using step=-1
reversed_numbers = numbers[::-1]
print("Reversed list [::-1]:", reversed_numbers)
터미널 출력
Subset [2:6]: [20, 30, 40, 50]
First five [:5]: [0, 10, 20, 30, 40]
Last four [5:]: [50, 60, 70, 80]
Every second [::2]: [0, 20, 40, 60, 80]
Last three [-3:]: [60, 70, 80]
Reversed list [::-1]: [80, 70, 60, 50, 40, 30, 20, 10, 0]

단계별 구현

  • 인덱스 시작부터 중지까지(포함하지 않음) 요소를 추출하려면 list[start:stop]을 사용하세요.
  • 목록의 경계에서 분할하려면 시작 또는 중지 인덱스(예: list[:4] 또는 list[4:])를 생략합니다.
  • 일정한 간격으로 요소를 건너뛰려면 대괄호 list[::step] 안에 세 번째 인수를 전달합니다.
  • 컬렉션의 끝에서부터 역방향으로 요소의 개수를 계산하려면 음수 인덱스를 사용하세요.

자주 묻는 질문

슬라이싱으로 인해 원래 목록이 수정되나요?

아니요, 목록 분할은 요청된 범위의 얕은 복사본을 반환하고 원본 목록은 완전히 변경되지 않은 상태로 유지합니다.

슬라이스 인덱스가 범위를 벗어나면 어떻게 되나요?

IndexError를 발생시키는 단일 인덱스에 액세스하는 것과는 달리, 슬라이싱은 관대하며 단순히 목록 경계에서 범위를 제한하고 범위에 요소가 없으면 빈 목록을 반환합니다.

관련 주제

권장 Python 리소스

관련 대화형 튜토리얼, 치트 시트, 코드 비교를 통해 지식을 확장하세요.