어제 오늘 내일

[Python 기초] "원하는 곳만 골라서 반전!" 리스트 부분 슬라이싱 및 뒤집기 본문

IT/Python

[Python 기초] "원하는 곳만 골라서 반전!" 리스트 부분 슬라이싱 및 뒤집기

hi.anna 2026. 5. 19. 22:08

리스트의 전체가 아니라, 예를 들어 "3번 인덱스부터 7번 인덱스까지만 거꾸로 뒤집고 싶다"면 어떻게 해야 할까요? 파이썬의 슬라이싱 규칙을 정확히 이해하면 아주 간단하게 해결됩니다.


1. 기본 원리: 부분 추출 후 뒤집기

가장 먼저 특정 구간을 슬라이싱으로 뽑아낸 뒤, 그 결과에 다시 뒤집기([::-1])를 적용하는 방식입니다.

📌 예제 코드: 인덱스 2번부터 5번 직전까지 뒤집기

numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

# 1. 2번 인덱스부터 5번 직전(4번)까지 추출: [2, 3, 4]
sub_list = numbers[2:5]

# 2. 추출한 부분만 뒤집기: [4, 3, 2]
reversed_sub = sub_list[::-1]

print(reversed_sub) 
# 출력: [4, 3, 2]

2. 고급 기술: 원본의 특정 구간만 '교체'하기

단순히 잘라서 출력하는 게 아니라, 원본 리스트 내의 특정 구간만 순서를 뒤집어서 다시 끼워 넣고 싶을 때 사용하는 실전 기술입니다. 리스트 슬라이싱의 '치환' 기능을 활용합니다.

📌 예제 코드: 원본 리스트의 일부만 반전시키기

alphabet = ['a', 'b', 'c', 'd', 'e', 'f', 'g']

# 인덱스 1번('b')부터 4번 직전('d')까지의 구간을 
# 해당 구간을 뒤집은 값으로 치환합니다.
alphabet[1:4] = alphabet[1:4][::-1]

print(alphabet)
# 출력: ['a', 'd', 'c', 'b', 'e', 'f', 'g']
# 설명: 'b', 'c', 'd' 구간이 'd', 'c', 'b'로 바뀌었습니다.

3. 더 정교한 조절: Step(보폭) 활용하기

슬라이싱의 세 번째 인자인 step을 활용하면 훨씬 정교한 작업이 가능합니다.

📌 예제 코드: 전체 리스트에서 2칸씩 건너뛰며 뒤집기

data = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

# 처음부터 끝까지 가되, 역순(-1)으로 2칸씩(-2) 건너뜁니다.
stepped_rev = data[::-2]

print(stepped_rev)
# 출력: [9, 7, 5, 3, 1]

💡 실전 팁: 슬라이싱 뒤집기 공식 정리

이 공식만 기억하면 어떤 구간이든 자유자재로 요리할 수 있습니다.

  • list[start:stop]: start부터 stop-1까지 자르기
  • list[start:stop][::-1]: 해당 구간을 잘라서 뒤집기
  • list[start:stop] = list[start:stop][::-1]: 해당 구간만 뒤집어서 원본에 덮어쓰기
  • list[stop-1 : start-1 : -1]: 슬라이싱 한 번으로 특정 구간을 역순으로 가져오기 (비어있는 start 값이 있을 때 주의가 필요하여 위 방법을 더 추천합니다.)

📝 마치며

특정 구간 슬라이싱은 데이터를 필요한 만큼만 떼어내어 가공할 때 매우 유용합니다. 특히 이미지 데이터의 픽셀을 반전시키거나, 문자열의 특정 부분만 암호화할 때 자주 사용되는 기술이죠.
 

반응형
Comments