DecordRay

[Python] 슬라이싱 기본과 예제 본문

알고리즘/파이썬

[Python] 슬라이싱 기본과 예제

DecordRay 2023. 2. 2. 13:45
728x90
반응형

주로 문자열을 문제가 많이나오는 코딩테스트 문제에서 활용도가 높은 기법(Ex-카카오)
Python에서 리스트를 슬라이싱해서 활용하는 방법을 알아보자!!

 

파이썬 슬라이싱(slicing)이란?

  • 슬라이싱(slicing) or 슬라이스(slice): 연속적인 객체들에(예: 리스트, 튜플, 문자열) 범위를 지정해 선택해서 객체들을 가져오는 방법 및 표기법을 의미한다.
  • 슬라이싱을 하면 새로운 객체를 생성하게 된다. 즉, 일부분을 복사해서 가져온다고 생각하면 된다.

 

기본 형태

  • a라는 연속적인 객체들의 자료구조(예: 리스트, 튜플, 문자열)가 있다고 가정을 했을 때 기본 형태는 아래와 같다.
a[start : end : step]

  • 각각 start, end, step 모두 양수와 음수를 가질 수 있다.
  • start: 슬라이싱을 시작할 시작위치
  • end: 슬라이싱을 끝낼 위치end는 포함하지 않는다(Ex - a[1:5]일 경우 1부터 4까지)
  • step: stride(보폭)라고도 하며 몇개씩 끊어서 가져올지와 방향을 정함. 옵션값이며 default값은 1이다.

아래의 예제를 확인하면 쉽게 이해가 가능하다.

 

index 값들의 위치

  • 위에 설명한대로 값들은 양수 혹은 음수를 가질 수 있다.
  • 양수: 연속적인 객체들의 제일 앞에서부터 0을 시작으로 번호를 뒤쪽으로 증가하면서 매김
  • 음수: 연속적인 객체들의 제일 뒤에서부터 -1을 시작으로 번호를 앞쪽으로 감소하면서 매김
  • 아래는 ['a', 'b', 'c', 'd', 'e']라는 리스트가 있을 때 index를 의미
a = ['a', 'b', 'c', 'd', 'e']

// index 예시
-------------------------------
|  a  |  b  |  c  |  d  |  e  |
-------------------------------
|  0  |  1  |  2  |  3  |  4  |          // 양수의 경우
-------------------------------
| -5  | -4  | -3  | -2  | -1  |          // 음수의 경우
-------------------------------

 

예제

특정 시작위치부터 끝까지 가져오기

  • a[ start : ]
>>> a = ['a', 'b', 'c', 'd', 'e']
>>> a[ 1 :  ]
['b', 'c', 'd', 'e']

# index 1에 해당하는 'b'부터 끝까지 가져오기
>>> a = ['a', 'b', 'c', 'd', 'e']
>>> a[ -3 :  ]
['c', 'd', 'e']

# index -3에 해당하는 'c'부터 역순으로 가져오기

 

시작점부터 특정 위치까지 가져오기

  • a[ : end ]
>>> a = ['a', 'b', 'c', 'd', 'e']
>>> a[  : 2 ]
['a', 'b']

# start가 공백이므로 처음부터 1번 index까지 가져오기
>>> a = ['a', 'b', 'c', 'd', 'e']
>>> a[  : -1 ]
['a', 'b', 'c', 'd']

# 처음부터 -2번 index까지 가져오기

 

특정 위치부터 특정 위치까지 모두 가져오기

  • a[ start : end ]
>>> a = ['a', 'b', 'c', 'd', 'e']
>>> a[ 2 : 4 ]
['c', 'd']

# index 2에 해당하는 'c'부터 index 3에 해당하는 'd'까지 가져오기
>>> a = ['a', 'b', 'c', 'd', 'e']
>>> a[ -4 : -2 ]
['b', 'c']

# index -4에 해당하는 'b'부터 index -3에 해당하는 'c'까지 가져오기
>>> a = ['a', 'b', 'c', 'd', 'e']
>>> a[ 3 : 0 : -1]
['d', 'c', 'b']

# index 3에 해당하는 'd'부터 index 1에 해당하는 'b'까지 역순으로 가져오기

 

step의 예제

  • a[ start : end : step ]
  • step이 양수일 때: 오른쪽으로 step만큼 이동하면서 가져온다.
  • step이 음수일 때: 왼쪽으로 step만큼 이동하면서 가져온다.
>>> a = ['a', 'b', 'c', 'd', 'e']
>>> a[ : : 2 ]
['a', 'c', 'e']

# 2칸씩 이동하면서 가져오기
>>> a = ['a', 'b', 'c', 'd', 'e']
>>> a[ -5 : : 3 ]
['a', 'd']

# 3칸씩 이동하면서 가져오기(여기서 index -5는 index 0과 동일)
>>> 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']

# index 3에 해당하는 'a'부터 역순으로 가져오기

 

728x90
반응형

'알고리즘 > 파이썬' 카테고리의 다른 글

[Python] permutation, combination 순열과 조합  (0) 2023.01.20
Comments