1. 파이썬 슬라이싱 (Python Slicing)
ㅇ 순서가 중요한, 시퀀스 자료형(문자열 str, 리스트 list, 튜플 tuple 등)에서,
- 범위를 지정해 부분을 추출하거나, 새 객체를 만들어내는 방법.
2. 파이썬 슬라이싱 방법
ㅇ (형식) seqObj[start : end : step]
- (단, start 포함 됨, end 포함 안함)
ㅇ (순서) [정방향] 0, 1, 2, ... [역방향] ..., -3, -2, -1
ㅇ (반환) 새로운 객체(list, str, tuple 등)를 반환
- 참조(reference)가 아닌 복사(copy) 효과를 내므로, 원본 변경에 영향 없음
ㅇ (특징)
- for문, while문으로 하나씩 접근하는 것 보다, 내부적으로 빠르게 동작
- 슬라이싱만으로 뒤집기, 건너뛰기, 복사 등 다양한 작업 가능
3. 파이썬 슬라이싱 예시
ㅇ 기본 예시)
- seqObj[::1],seqObj[:],seqObj[0:] => 기본 동일 (사본 리턴)
- seqObj[::-1] => 뒤집음
- seqObj[::2] => 2칸씩 건너뛰며 이동 추출
- seqObj[0] => 첫번째 문자 만 추출
- seqObj[-1] => 마지막 문자 (뒤에서 첫번째) 만 추출
- seqObj[:-2] => (처음) ~ (뒤에서 2번째)까지 추출
- seqObj[-2:] => (뒤에서 2번째) ~ (마지막)까지 추출
- seqObj[2:] : (앞 3번째) ~ (마지막)까지 추출
ㅇ 응용 예시)
- l = [1,2,3,4,5]
. l[3:] => [4,5]; l[1:4:2] => [2,4]; l[:3] => [1,2,3];
. l[::2] => [1,3,5] (처음부터 끝까지, 2칸 간격)
. l[::-1] => [5,4,3,2,1] (리스트 뒤집기)
. l[1:-1] => [2,3,4] (처음과 끝을 제외한 부분)
. l[-3:] => [3,4,5] (뒤에서 3번째부터 끝까지)
. l[:-2]) => [1, 2, 3] (처음부터 뒤에서 2번째 전까지)
. l[1:5:3] => [2,5] (인덱스 1에서 시작해 3칸씩 건너뛰며)
. l[2:2] => [] (시작과 끝이 같으면 빈 리스트)
- s = "abcdefg" (문자열)
. s[1:6:2] => "bdf"
. s[-5:-1] => "cdef"
- t = (10,20,30,40,50) 튜플
. t[::2] => (10,30,50)
. t[::-1] => (50,40,30,20,10)
- m = [[1,2,3], [4,5,6], [7,8,9]] (다차원 리스트)
. m[0][:2] => [1,2] (첫 번째 행에서 앞 2개만)
. [row[1] for row in m] => [2,5,8] (차원마다 1열 추출)