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이며, 이는 연속적인 요소를 추출할 때 사용됩니다. 음수 값도 사용할 수 있습니다.
아래는 슬라이싱의 다양한 사용방법이다.

'Python&Dev > Python' 카테고리의 다른 글
| [코딩] 백준 코딩테스트 - 1000, 1330 (0) | 2024.01.27 |
|---|---|
| Flask 프레임워크에 대해 (0) | 2023.12.06 |
| 클래쓰, 인스턴스(객체) 이해하기 (+이진탐색트리 코드분석) (1) | 2023.10.05 |
| Mapping(함수 매핑)_Part 2 (0) | 2023.09.01 |
| Mapping(함수 매핑)_Part 1 (0) | 2023.08.31 |