파이썬의 슬라이싱이란?
파이썬에서는 시퀀스 객체(리스트, 튜플, 문자열, 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
'Language > Python' 카테고리의 다른 글
| [Python] inconsistent use of tabs and spaces in indentation 에러 (0) | 2022.09.21 |
|---|---|
| Python bisect.bisect_left()와 bisect.bisect_right (0) | 2022.09.10 |
| [Python]파이썬 자료형별 시간복잡도 정리 (0) | 2022.09.03 |
| Python mutable객체와 immutable객체 (0) | 2022.07.23 |
| [python]파이썬 자료형의 참과 거짓 (0) | 2021.11.07 |