[Python] list와 str의 슬라이싱(Slicing)


1. 리스트의 슬라이싱 (start, end, step)

  • 리스트 슬라이싱을 이제껏 자주 활용해왔지만, 그동안 몰랐던 step(stride) 인자를 알게되어 정리한다.
list(start,end,step)

위와 같이 리스트의 슬라이싱을 표기할 수 있으며, 각 3가지 인자를 설명하자면 다음과 같다

  • start : 슬라이싱을 시작하는 위치
  • end : 슬라이싱을 끝내는 위치 (주의할 점 : end로 지정한 인덱스는 제외하고 그 앞까지 인덱싱)
  • step : stride라고도 부르며, 간격을 몇으로 두어 슬라이싱해올지를 결정한다. (정말 유용하게 사용가능할 듯하다.)
  • step 역시 음수의 값을 가질 수 있는데, 양수값을 입력받았을 때 오른쪽으로 간격을 두면서 슬라이싱하는 것이라면 음수값을 입력받았을 때에는 왼쪽으로 간격을 두면서 슬라이싱하는 것이다.

 

1.1. step = 1 (default)

Input:

mylist = ['A','B','C','D','E','F','G','H','I','J','K','L']
mylist[1:10:1]   #mylist[1:4]과 같은 결과, step=1(default)

Output:

['B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']
  • 인덱스1번부터 인덱스9번(10번의 이전)까지 간격을 1씩 두며 슬라이싱하였다.

 

1.2. step = 2

Input:

mylist[1:10:2]

Output:

['B', 'D', 'F', 'H', 'J']
  • 인덱스1번부터 인덱스9번(10번의 이전)까지 간격을 2씩 두며 슬라이싱하였다.

 

1.3. step = -1

Input:

mylist[10:1:-1]

Output:

['K', 'J', 'I', 'H', 'G', 'F', 'E', 'D', 'C']
  • step = -1로 두는 것은 위의 예제와는 달리 반대방향인 오른쪽부터 간격을 두며 왼쪽으로 슬라이싱하는 것이므로, 위의 예제와는 달리 10 → 1까지 방향을 설정하여 반대로 인덱싱한 것을 볼 수 있다.
  • 인덱스10번부터 인덱스2번(순서로 보았을 때 역시 1번의 이전)까지 왼쪽으로 간격을 1씩 두며 슬라이싱하였다.

 

1.4. Palindrome (str형태)

  • 사실, Palindrome은 문자(str)형태가 다음의 예와 같이 순서를 거꾸로 하여도 똑같은 형태를 말한다.
  • 문자형태(str) 역시 위에서 이해한 list의 슬라이싱과 똑같이 슬라이싱을 적용할 수 있다.

 

ex1) saas		↔ 		saas
ex2) paap		↔		paap
ex3) KAYAK	↔	 	KAYAK
ex4) REVIVER	↔		REVIVER
ex5) ROTATOR	↔	 	ROTATOR

Input:

def rec_palindrome(s):
	return s == s[::-1]

s1 = "saas"
s2 = "paap"
s3 = "KAYAK"
s4 = "REVIVER"
s5 = "ROTATOR"
s6 = "APC"
s7 = "marni"

print(rec_palindrome(s1))
print(rec_palindrome(s2))
print(rec_palindrome(s3))
print(rec_palindrome(s4))
print(rec_palindrome(s5))
print(rec_palindrome(s6))
print(rec_palindrome(s7))

Output:

True
True
True
True
True
False
False
  • 위와 같이 슬라이싱(step=-1)을 이용하면 간단히 palindrome인지 판별할 수 있는 함수를 생성할 수 있다.

+ Recent posts