정의
- 슬라이싱(slicing) or 슬라이스(slice): 연속적인 객체들에(예: 리스트, 튜플, 문자열) 범위를 지정해 선택해서 객체들을 가져오는 방법 및 표기법을 의미한다.
- 슬라이싱을 하면 새로운 객체를 생성하게 된다. 즉, 일부분을 복사해서 가져온다고 생각하면 된다.
기본 사용법과 형태
기본 형태
- a라는 연속적인 객체들의 자료구조(예: 리스트, 튜플, 문자열)가 있다고 가정을 했을 때 기본 형태는 아래와 같다.
a[start : end : step]
- 각각 start, end, step 모두 양수와 음수를 가질 수 있다.
- start: 슬라이싱을 시작할 시작위치다.
- end: 슬라이싱을 끝낼 위치로 end는 포함하지 않는다!
- step: stride(보폭)라고도 하며 몇개씩 끊어서 가져올지와 방향을 정한다. 옵션이며 아래의 예제를 확인하면 쉽게 이해가 가능하다.
인덱스 값들의 위치
- 위에 설명한대로 값들은 양수 혹은 음수를 가질 수 있다.
- 양수: 연속적인 객체들의 제일 앞에서부터 0을 시작으로 번호를 뒤쪽으로 증가하면서 매긴다.
- 음수: 연속적인 객체들의 제일 뒤에서부터 -1을 시작으로 번호를 앞쪽으로 감소하면서 매긴다.
- 아래는 ['a', 'b', 'c', 'd', 'e']라는 리스트가 있을 때 인덱스를 의미한다.
a = ['a', 'b', 'c', 'd', 'e']
// Index References
-------------------------------
| a | b | c | d | e |
-------------------------------
| 0 | 1 | 2 | 3 | 4 | // 양수의 경우
-------------------------------
| -5 | -4 | -3 | -2 | -1 | // 음수의 경우
-------------------------------
예제
- 기본적으로 모든 예제들은 a = ['a', 'b', 'c', 'd', 'e']의 리스트를 통해서 작성됐다.
특정 시작위치부터 끝까지 가져오기
- a[ start : ]
>>> a = ['a', 'b', 'c', 'd', 'e']
>>> a[ 1 : ]
['b', 'c', 'd', 'e']
>>> a = ['a', 'b', 'c', 'd', 'e']
>>> a[ -3 : ]
['c', 'd', 'e']
시작점부터 특정 위치까지 가져오기
- a[ : end ]
>>> a = ['a', 'b', 'c', 'd', 'e']
>>> a[ : 2 ]
['a', 'b']
>>> a = ['a', 'b', 'c', 'd', 'e']
>>> a[ : -1 ]
['a', 'b', 'c', 'd']
특정 위치부터 특정 위치까지 모두 가져오기
- a[ start : end ]
>>> a = ['a', 'b', 'c', 'd', 'e']
>>> a[ 2 : 4 ]
['c', 'd']
>>> a = ['a', 'b', 'c', 'd', 'e']
>>> a[ -4 : -2 ]
['b', 'c']
>>> a = ['a', 'b', 'c', 'd', 'e']
# 인덱스 1 ~ 3까지의 값을 거꾸로 가져오기
>>> a[ 3 : 0 : -1]
['d', 'c', 'b']
step의 예제
- a[ start : end : step ]
- step이 양수일 때: 오른쪽으로 step만큼 이동하면서 가져온다.
- step이 음수일 때: 왼쪽으로 step만큼 이동하면서 가져옵니다.
>>> a = ['a', 'b', 'c', 'd', 'e']
# 2칸씩 이동하면서 가져온다.
>>> a[ : : 2 ]
['a', 'c', 'e']
>>> a = ['a', 'b', 'c', 'd', 'e']
# 3칸씩 이동하면서 가져온다.
>>> a[ -5 : : 3 ]
['a', 'd']
>>> a = ['a', 'b', 'c', 'd', 'e']
# 전체를 거꾸로 가져온다.
>>> a[ : : -1 ]
['e', 'd', 'c', 'b', 'a']
>>> a = ['a', 'b', 'c', 'd', 'e']
>>> a[ 3 : : -1 ]
['d', 'c', 'b', 'a']
'프로그래밍 언어 > Python' 카테고리의 다른 글
[Python] math 모듈 (0) | 2024.03.04 |
---|---|
[Python] for문 활용법 (0) | 2024.02.29 |
[Python] time() 함수, 거리구하기 예제 (0) | 2024.01.26 |
[Python] 수학 (math) 함수 (0) | 2024.01.26 |
[Python] Tuple (튜플) 사용 방법 (0) | 2023.12.20 |