파이썬 리스트 슬라이싱
파이썬 리스트 슬라이싱(List Slicing)은 리스트의 일부를 추출하는 방법을 의미한다. 슬라이싱은 리스트에서 여러 요소를 선택하고, 이 선택된 부분을 새로운 리스트로 반환하거나 다른 목적에 활용하는데 사용된다. 슬라이싱은 리스트의 인덱스를 사용하여 부분 리스트를 지정하는 방식으로 이루어진다.
Tip
리스트 뿐만아니라 iterable한 객체(튜플, 문자열 등)에 모두 사용할 수 있다.
리스트 슬라이싱의 기본 구문은 아래와 같다.
new_list = my_list[start:stop:step]
- start : 슬라이스 시작 위치(포함됨)
- stop : 슬라이스 종료 위치(포함되지 않음. 즉, n - 1까지만 포함)
- step(선택 사항) : 스텝(간격) 값. 요소를 건너뛸 간격을 지정
기본적인 구문을 알았으니 다양한 예제들을 살펴보며 사용법을 자세히 익혀보자.
my_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 1부터 4까지 슬라이싱 (인덱스 1부터 3까지를 선택)
sub_list = my_list[1:4] # sub_list = [1, 2, 3]
# 2부터 끝까지 슬라이싱
sub_list = my_list[2:] # sub_list = [2, 3, 4, 5, 6, 7, 8, 9]
# 처음부터 6까지 스텝 2로 슬라이싱 (인덱스 0, 2, 4를 선택)
sub_list = my_list[:7:2] # sub_list = [0, 2, 4, 6]
# 역순으로 슬라이싱
sub_list = my_list[::-1] # sub_list = [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
구문에 대해 설명했을 때 언급했다시피 stop 부분은 n - 1까지만 포함되기 때문에 my_list[1:4]의 경우 인덱스 1,2,3 까지만 슬라이싱하게 된다. 만약 start에 숫자를 넣지 않으면 처음부터 시작한다는 의미이고 stop 부분에 숫자를 넣지 않으면 끝까지라는 의미이다. 따라서 my_list[2:]의 경우 2번째 인덱스부터 끝까지 슬라이싱을 하게된다. my_list[:7:2]는 처음부터 6(7 - 1)까지 2칸씩 슬라이싱을 하는 의미이며 my_list[::-1]의 경우 start와 stop 부분에 숫자가 들어가있지 않기 때문에 처음부터 끝까지 슬라이싱을 하게된다. 다만, step(간격)이 -1이기 때문에 끝에서부터 슬라이싱을 하여 결국 반전된 리스트를 반환하게 된다.
리스트 전체 슬라이싱
my_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 슬라이싱을 사용하여 리스트 복사 (원본 리스트를 변경하지 않음)
copy_of_list = my_list[:] # copy_of_list에 원본 리스트의 복사본 생성
만약 위와 같이 [:] start,stop,step이 전부 들어가있지 않을 경우 리스트 전체를 슬라이싱하게 된다. 즉, 원본 리스트와 변함없는 똑같은 리스트를 반환하게된다.
특정 구간에서부터 뒤로 슬라이싱
my_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 인덱스 4부터 1까지 역순으로 슬라이싱
sub_list = my_list[4:0:-1] # sub_list = [4, 3, 2, 1]
만약 stop 부분이 0일 경우 인덱스 0은 포함되지 않는다. 따라서 4번째 인덱스인 4부터 시작하여 step이 -1이므로 역순으로 인덱스 1까지 슬라이싱하게 된다.
읽어주셔서 감사합니다.