슬라이싱

CHOJUNGHO96·2023년 11월 15일
0

파이썬

목록 보기
4/5

슬라이싱

슬라이싱은 파이썬에서 리스트, 문자열, 튜플 등의 시퀀스 타입에 적용되는 강력한 기능입니다. 슬라이싱을 사용하면 시퀀스의 일부분을 선택적으로 접근할 수 있습니다. 기본 형식은 sequence[start:stop:step]이며, 여기서 start는 시작 인덱스, stop은 종료 인덱스(포함되지 않음), step은 건너뛰는 요소의 수를 지정합니다.

예제코드

# 리스트 슬라이싱
numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
sliced = numbers[2:7:2]
print(sliced)  # 출력: [2, 4, 6]

# 문자열 슬라이싱
text = "Hello, world!"
sub_text = text[7:12]
print(sub_text)  # 출력: world

슬라이스와 범위 지정 시에 마지막 항목이 포함되지 않는 이유

파이썬에서 슬라이스의 stop 인덱스는 해당 범위에 포함되지 않습니다. 이는 여러 부분으로 나누어진 슬라이스들이 서로 중복되지 않고, 연속성을 유지하도록 설계되었기 때문입니다. 예를 들어, 0:5와 5:10처럼 연속적인 슬라이스를 만들 경우, 두 슬라이스는 서로 겹치지 않으며 분명한 경계를 가집니다. 이러한 접근 방식은 프로그래밍에서 일관성과 예측 가능성을 높이는 데 도움이 됩니다.

예제코드

print(a[0:5])
[1, 2, 3, 4, 5]
print(a[5:10])
[6, 7, 8, 9, 10]

슬라이스 객체

슬라이스 객체는 slice(start, stop, step) 함수를 사용하여 명시적으로 생성할 수 있습니다. 이 객체는 슬라이싱 연산을 좀 더 명확하게 표현하고 재사용할 수 있게 해줍니다.

예제코드

# 슬라이스 객체 생성
my_slice = slice(2, 7, 2)

# 리스트에 슬라이스 객체 사용
numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
sliced = numbers[my_slice]
print(sliced)  # 출력: [2, 4, 6]

다차원 슬라이싱과 생략기호 (Ellipsis)

다차원 데이터 구조에서 슬라이싱을 사용할 때는 각 차원에 대한 슬라이스를 지정할 수 있습니다. 이 때, 생략기호 (...)는 하나 이상의 차원을 나타내는 데 사용되며, 주로 고차원 배열에서 사용됩니다. 예를 들어, 넘파이(numpy)와 같은 라이브러리에서 행렬이나 다차원 배열을 다룰 때 유용합니다.

예제코드

import numpy as np

# 3차원 넘파이 배열
arr = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])

# 다차원 슬라이싱
sliced = arr[1, ..., 0]
print(sliced)  # 출력: [5 7]

슬라이스에 할당하기

슬라이스에 값을 할당하는 것은 시퀀스의 일부분을 다른 내용으로 대체할 때 사용됩니다. 이 기능은 가변 시퀀스인 리스트에서 사용할 수 있으며, 튜플이나 문자열과 같은 불변 시퀀스에서는 사용할 수 없습니다.

# 리스트 슬라이스에 할당
numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
numbers[2:7] = [20, 21, 22]
print(numbers)  # 출력: [0, 1, 20, 21, 22, 7, 8, 9]
profile
백엔드개발자

0개의 댓글