Excel & IT Info

아이엑셀러 닷컴, 엑셀러TV

Python

Python Slice 함수를 사용하는 방법

권현욱(엑셀러) 2023. 12. 21. 20:00
반응형

Python은 Slice() 함수를 사용하여 시퀀스의 섹션을 색인화합니다. 색인화(indexing)는 매우 자주 사용되는 중요한 개념입니다. 파이썬에서 Slice 함수를 사용하는 방법에 대해 소개합니다.

 

권현욱(엑셀러) | 아이엑셀러 닷컴 대표 · Microsoft Excel MVP · Excel 솔루션 프로바이더 · 작가

 

※ 이 글은 아래 기사 내용을 토대로 작성되었습니다만, 필자의 개인 의견이나 추가 자료들이 다수 포함되어 있습니다.


  • 원문: How to Use the Python slice() Function
  • URL: https://thenewstack.io/how-to-use-the-python-slice-function/

파이썬 Slice 함수

Python 프로그램을 작성할 때 다양한 항목(예: 숫자, 문자 등)을 사용하는 경우가 많습니다. 예를 들어 목록에서 1부터 10까지의 숫자를 사용할 수 있으며 애플리케이션 전체에서 해당 목록의 다른 섹션을 참조해야 할 수도 있습니다. 어떤 경우에는 처음 두 문자만 참조하려고 할 수도 있습니다. 다른 섹션에서는 인덱스 2부터 6까지의 범위를 참조할 수 있습니다. 다음은 목록의 예입니다.

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

 

Python에서 인덱싱은 시퀀스의 요소에 액세스하는 처리입니다. 이러한 요소는 단일 숫자, 숫자 문자열, 단일 단어, 단어 문자열 또는 다양한 유형의 조합일 수 있습니다. 각 숫자(단어 등)는 인덱스이므로 1은 인덱스 0이고 10은 인덱스 9입니다(대부분의 프로그래밍 언어와 마찬가지로 Python은 1이 아닌 0에서 계산을 시작하기 때문입니다).

 

시퀀스의 섹션을 색인화하기 위해 Python은 Slice() 함수를 사용합니다. 이 기능을 사용하면 슬라이싱을 시작할 위치와 종료할 위치를 지정할 수 있습니다. 따라서 위의 예에서는 Python에 인덱스 2(3)에서 슬라이스를 시작하고 인덱스 7(8)에서 끝나도록 지시할 수 있습니다. 이렇게 하면 슬라이스는 다음과 같습니다.

3, 4, 5, 6, 7, 8

 

또는 다음과 같은 색상 목록을 가질 수도 있습니다.

[red, blue, green, yellow, purple, pink, black, orange]

 

해당 시퀀스를 1-4에서 잘라낼 수 있습니다.

blue, green, yellow, purple

 

Slice 구문은 다음과 같습니다.

slice(start, end, step)

 

기본적으로 slice() 함수는 1씩 단계적으로 진행됩니다. 따라서 위의 슬라이싱이 작동합니다. 그러나 필요한 단계를 지정할 수 있습니다. 예를 들어 위 목록에서 2단계로 진행하면 결과는 다음과 같습니다.

blue, yellow

 

그런데 왜 두 가지 요소만 포함합니까? 슬라이스는 1-4에서 2단계로 진행되었다는 점을 기억하세요. 노란색은 두 번째 요소(인덱스 4)이므로 다음 점프(2단계씩)는 5가 되며 이는 슬라이스 범위를 벗어납니다. 3(노란색)에서 멈춥니다. 슬라이스를 0에서 시작하여 4(2씩 단계별로)로 진행하면 결과는 다음과 같습니다.

red, green, purple

 

슬라이스가 실제로 작동하는 모습을 살펴보겠습니다. 먼저 숫자가 포함된 슬라이스 예제를 만들어 보겠습니다. Slice()는 내장 Python 함수의 일부이므로 외부 라이브러리를 호출할 필요가 없습니다.

my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

 

다음으로, Slice() 함수를 사용하여 x를 2에서 7까지의 슬라이스 객체로 정의하겠습니다.

x = slice(2, 7)

 

마지막으로 print() 함수를 사용하여 다음과 같이 슬라이스를 인쇄합니다.

print(my_slice[x])

 

전체 스크립트는 다음과 같습니다.

#Define our list as my_slice
my_slice = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

#Create our slice object x
x = slice(2,7)

#Print our resulting slice
print(my_slice[x])

 

다음 명령을 사용하여 스크립트를 실행합니다.

python3 slice.py

 

출력 결과는 다음과 같습니다.

[3, 4, 5, 6, 7]

 

비슷한 스크립트를 만들어 보겠습니다. 좀 더 복잡합니다.

# Define our list as my_list
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# Create our slice object as my_slice
my_slice = slice(2, 7)  # This represents the range from index 2 to index 6 (not including 7)

# Slice our list using our slice object
sliced_list = my_list[my_slice]

#Print our resulting slice
print(sliced_list)

 

출력은 Slice.py 스크립트를 실행했을 때와 동일합니다.

 

첫 번째 스크립트에서 단계 함수를 사용해 보겠습니다. 2단계씩 슬라이스를 생성하겠습니다. Slice.py 스크립트로 돌아가서 다음을 변경합니다.

x = slice(2,7,2)

 

파일을 저장하고 닫습니다. 새 스크립트는 다음과 같습니다.

#Define our list as my_slice
my_slice = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

#Create our slice object x, stepping by two
x = slice(2,7,2)

#Print our resulting slice
print(my_slice[x])

 

다음을 사용하여 스크립트를 실행합니다.

python3 slice.py

 

출력은 다음과 같습니다.

[3, 5, 7]