Stack 예제코드를 풀어보던 과정에서 파이썬 컴프리헨션과 슬라이싱에 대해 간단히 공부해보았다.

 

아래 코드를 분석하면서 컴프리헨션과 슬라이싱을 함께 공부해보자.

 

stack 알고리즘 예제코드

 

 

< 코드 분석 >

 

def isValid(self, s : str) -> bool:

함수 isValid에 str형태의 인자(s)를 받고 최종 출력물이 참/거짓을 나타내는 함수를 뜻한다.

 

 

 

 

컴프리헨션

 

s_list = [s[i:i+2] for i in range(0, len(s), 2)]

컴프리헨션이란, 쉽게말해 리스트 반복문을 간결하게 한줄로 나타내는 강력한 방법이다. 위 코드를 해석하면,

 

* for i in range(0, len(s), 2) : 0부터 문자열 s의 길이까지 2씩 증가하는 i라는 변수를 반복적으로 설정하고 이는 문자열을 두 글자씩 끊어내기 위해 인덱스를 조정하는 역할을 한다.

* s[i:i+2] : 문자열 s에서 현재 인덱스 i부터 i+2까지의 부분 문자열을 추출한다. (슬라이싱)


* s_list = [s[i:i+2] for i in range(0, len(s), 2)] : 위의 과정을 반복하여 나온 두 글자씩의 부분 문자열들을 리스트 s_list에 순서대로 저장합니다.  

 

위 코드를 다시 반복문으로 풀어쓰면 다음과 같다.

s_list = []
for i in range(0, len(s), 2):
    s_list.append(s[i:i+2])

s = "hello" 일때,  위 컴프리헨션 코드함수를 실행시키면, s_list 에는 [he,ll,o] 이렇게 3개가 쌓인다.

 

 

 

 

슬라이싱

 

시퀀스(sequence) 데이터 타입인 문자열, 리스트, 튜플 등에서 특정 범위의 요소를 추출하는 방법이다. 쉽게말해, 원하는 데이터범위를 추출하는 것이다.


s = "HelloWorld"에서 원하는 범위를 추출하는 방법은 다양하다. 아래 템플릿 코드만 기억하면 된다.

* start: 시작지점의 인덱스. 이 인덱스에 해당하는 요소가 포함됩니다. 기본값은 0입니다.


* stop: 추출을 끝낼 지점의 인덱스. 이 인덱스 바로 전까지의 요소가 포함됩니다. (즉, 인덱스 stop-1까지 추출됨) 

-> 이 부분이 가장 중요! 

ex) a = 1234 에서 a2 = a[0:3]이면 0번째에서 3번째가 아닌, 0번째에서 (3-1)번째로 a2 = 123이 된다.

 

* step: 추출할 요소 사이의 간격을 나타내는 값입니다. 기본값은 1이며, 이는 연속적인 요소를 추출할 때 사용됩니다. 음수 값도 사용할 수 있습니다.

 

아래는 슬라이싱의 다양한 사용방법이다.

+ Recent posts