본문 바로가기
Language/Python

[python] 파이썬 리스트의 슬라이싱

by brother_stone 2022. 9. 5.

파이썬의 슬라이싱이란?

파이썬에서는 시퀀스 객체(리스트, 튜플, 문자열, range객체)의 요소 슬라이싱 기능을 지원하며, 

여기서 슬라이싱이란 말그대로 시퀀스 객체의 일부를 잘라내는 것이다

 

아래 예시를 살펴보자.

lst = [2, 3, 5, 7, 1]
print(lst[2:4]) # [5, 7]

리스트 lst의 2번째 요소 ~ 4번째 요소 직전 요소까지 잘라낸 결과이다.

 

문법

sequence[start:stop[:step]]

start: 슬라이싱을 시작할 인덱스 번호이다. 생략 시 기본값은 0이다.

stop: 슬라이싱을 멈출 인덱스 번호로 생략 시 기본값은 시퀀스 객체의 크기까지이다 즉, 마지막 요소까지라는 말이다.

step: range()함수에서도 step 매겨변수가 존재하는 것 처럼 슬라이싱에도 이를 지원한다. 생략 시 기본값은 1이다.

 

리스트lst의 0번 인덱스부터 끝까지 요소 2개씩 슬라이싱 예시이다.

print(lst[::2]) # [2, 5, 1]
 

시간복잡도

O(k) for slice retrieval

O(n) for deletion

O(n+k) for slice assignment

예시

"ABCD"[0:2] # 'AB'
"ABCD"[0:4:2] #'AC'

step의 값이 음수이면 반환값이 거꾸로 리턴된다.

"ABCD"[::-1] # 'DCBA'
[0, 1, 2, 3][::-1] # [3, 2, 1, 0]

슬라이싱을 통해 시퀀스 객체의 요소 여러 개를 수정할 수 있다.

l = [0, 1, 2, 3]
l[:2] = ("AB", "CD")
print(l) # ['AB', 'CD', 2, 3]

시퀀스 객체의 요소 삭제 역시 가능하다.

l = [0, 1, 2, 3]
del l[::2]
print(l) #[1, 3]

 

 

출처:https://python-reference.readthedocs.io/en/latest/docs/brackets/slicing.html