파이썬 슬라이스(Slice)의 모든것: 기초부터 심화까지의 설명과 예제

안녕하세요, 이번에는 파이썬 슬라이스에 대해 알아보겠습니다. 파이썬 슬라이스 함수는 시퀀스 자료형의 일부를 잘라내어 새로운 시퀀스를 만드는 기능입니다. 이 기능은 데이터를 다룰 때 매우 유용하므로 잘 알아두면 좋습니다. 이 글에서는 파이썬 슬라이스 함수의 기본 사용법과 응용 방법을 예제와 함께 설명하겠습니다.

파이썬 슬라이스 기본 사용법
파이썬 슬라이스 함수의 기본 문법
1 2 |
시퀀스객체[시작인덱스:끝인덱스:인덱스증가폭] |
시퀀스객체는 리스트, 튜플, 문자열 등의 시퀀스 자료형을 의미합니다. 시작인덱스는 슬라이싱을 시작할 위치를, 끝인덱스는 슬라이싱을 끝낼 위치를, 인덱스증가폭은 인덱스를 증가시키는 단위를 나타냅니다. 시작인덱스와 인덱스증가폭은 생략할 수 있으며, 기본값은 각각 0과 1입니다. 끝인덱스는 생략할 수 없으며, 실제로 가져오는 인덱스는 끝인덱스보다 1 작습니다.
예를 들어, 다음과 같이 리스트 a가 있습니다.
1 2 |
a = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90] |
이 리스트에서 인덱스 0부터 3까지 슬라이싱하려면 아래와 같이 작성합니다.
1 2 3 |
a[0:4] # 인덱스 0부터 3까지 잘라서 새 리스트를 만듦 [0, 10, 20, 30] |
이때, 끝인덱스는 4로 지정했지만 실제로 가져오는 인덱스는 0부터 시작해서 [0, 1, 2, 3], 3까지입니다.
만약 리스트의 처음부터 슬라이싱하려면 시작인덱스를 생략할 수 있습니다.
1 2 3 |
a[:4] # 리스트 처음부터 인덱스 3까지 가져옴 [0, 10, 20, 30] |
반대로 리스트의 끝까지 슬라이싱하려면 끝인덱스를 생략할 수 있습니다.
1 2 3 |
a[4:] # 인덱스 4부터 마지막 요소까지 가져옴 [40, 50, 60, 70, 80, 90] |
리스트 전체를 슬라이싱하려면 시작인덱스와 끝인덱스를 모두 생략할 수 있습니다.
1 2 3 |
a[:] # 리스트 전체를 가져옴 [0, 10, 20, 30, 40, 50, 60, 70, 80, 90] |
인덱스는 음수도 사용할 수 있습니다. 음수 인덱스는 뒤에서부터 요소를 가리킵니다. 예를 들어, 인덱스 -1은 마지막 요소를, 인덱스 -2는 뒤에서 두 번째 요소를 의미합니다.
1 2 3 |
a[4:-1] # 인덱스 4부터 -2까지 요소 5개를 가져옴 [40, 50, 60, 70, 80] |
인덱스 증가폭을 지정하면 인덱스를 건너뛰면서 요소를 가져올 수 있습니다. 예를 들어, 인덱스 증가폭을 2로 지정하면 인덱스를 2씩 증가시키면서 요소를 가져옵니다.
1 2 3 |
a[2:8:2] # 인덱스 2부터 2씩 증가시키면서 인덱스 7까지 가져옴 [20, 40, 60] |
인덱스 증가폭을 음수로 지정하면 인덱스를 감소시키면서 요소를 가져옵니다. 이때는 시작인덱스와 끝인덱스의 순서에 주의해야 합니다. 시작인덱스가 끝인덱스보다 크거나 같아야 합니다.
1 2 3 |
a[8:2:-2] # 인덱스 8부터 -2씩 감소시키면서 인덱스 3까지 가져옴 [80, 60, 40] |
파이썬 슬라이스 응용
파이썬 슬라이스 함수는 시퀀스 자료형의 일부를 잘라내는 기능뿐만 아니라, 시퀀스 자료형의 값을 변경하거나 삭제하는 기능도 제공합니다. 이때는 슬라이싱한 결과에 새로운 값을 할당하거나, 빈 리스트를 할당하면 됩니다.
예를 들어, 다음과 같이 리스트 b가 있습니다.
1 2 |
b = [1, 2, 3, 4, 5] |
이 리스트에서 인덱스 1부터 3까지의 값을 [10, 20, 30]으로 변경하려면 다음과 같이 작성합니다.
1 2 3 4 |
b[1:4] = [10, 20, 30] # 인덱스 1부터 3까지의 값을 [10, 20, 30]으로 변경 b [1, 10, 20, 30, 5] |
이때, 슬라이싱한 범위와 할당한 값의 길이가 다르면 리스트의 길이도 변합니다.
1 2 3 4 |
b[1:4] = [100] # 인덱스 1부터 3까지의 값을 [100]으로 변경 b [1, 100, 5] |
리스트에서 인덱스 1부터 3까지의 값을 삭제하려면 빈 리스트를 할당하면 됩니다.
1 2 3 4 |
b[1:4] = [] # 인덱스 1부터 3까지의 값을 삭제 b [1] |
리스트에 새로운 값을 삽입하려면 슬라이싱한 범위의 시작 인덱스와 끝 인덱스를 같게 하고, 새로운 값을 할당하면 됩니다.
1 2 3 4 |
b[1:1] = [200, 300] # 인덱스 1의 위치에 [200, 300]을 삽입 b [1, 200, 300] |
파이썬 슬라이스 함수는 문자열에도 적용할 수 있습니다. 문자열은 변경할 수 없는 자료형이므로 슬라이싱한 결과에 새로운 값을 할당하거나 삭제할 수는 없지만, 슬라이싱을 통해 문자열의 일부를 추출할 수 있습니다.
예를 들어, 다음과 같이 문자열 c가 있습니다.
1 2 |
c = 'Hello, world!' |
이 문자열에서 인덱스 0부터 4까지 슬라이싱하면 ‘Hello’를 얻을 수 있습니다.
1 2 3 4 |
c[0:5] # 인덱스 0부터 5번째 값까지 가져옴 'Hello' |
파이썬 슬라이스 활용 예제
파이썬 슬라이스 함수는 다양한 상황에서 유용하게 사용할 수 있습니다. 여기서는 몇 가지 예제를 통해 파이썬 슬라이스 함수의 활용 방법을 알아보겠습니다.
예제 1: 리스트의 순서 뒤집기
리스트의 순서를 뒤집고 싶다면, 인덱스 증가폭을 -1로 지정하고 슬라이싱하면 됩니다.
1 2 3 4 |
d = [1, 2, 3, 4, 5] d[::-1] # 리스트의 순서를 뒤집음 [5, 4, 3, 2, 1] |
예제 2: 문자열의 일부 변경하기
문자열은 변경할 수 없는 자료형이므로 슬라이싱한 결과에 새로운 값을 할당할 수 없습니다. 하지만 슬라이싱을 통해 문자열의 일부를 추출하고, 새로운 문자열과 연결하면 문자열의 일부를 변경하는 효과를 낼 수 있습니다.
예를 들어, 다음과 같이 문자열 e가 있습니다.
1 2 |
e = 'Hello, world!' |
이 문자열에서 ‘world’를 ‘Python’으로 변경하려면 다음과 같이 작성합니다.
1 2 3 |
e[:7] + 'Python' + e[12:] # 문자열의 일부를 새로운 문자열과 연결 'Hello, Python!' |
예제 3: 팰린드롬 판별하기
팰린드롬이란 앞으로 읽으나 뒤로 읽으나 같은 문자열을 의미합니다. 예를 들어, ‘madam’, ‘racecar’, ‘level’, ‘소주한병만주소’ 등이 팰린드롬입니다. 파이썬 슬라이스 함수를 이용하면 문자열이 팰린드롬인지 판별할 수 있습니다.
예를 들어, 다음과 같이 문자열 f가 있습니다.
1 2 |
f = 'racecar' |
이 문자열이 팰린드롬인지 판별하려면 다음과 같이 작성합니다.
1 2 3 |
f == f[::-1] # 문자열과 뒤집은 문자열이 같은지 비교 True |
문자열과 뒤집은 문자열이 같으면 True를, 다르면 False를 반환합니다.
이상으로 파이썬 슬라이스에 대해 알아보았습니다. 이 기능을 잘 활용하면 데이터를 다루는 데 많은 도움이 되고 복잡한 코드를 간단하게 바꿀 수 있습니다. 여기를 눌러서 다른 유용한 코딩 글도 한번씩 확인해주세요. 감사합니다.