리스트를 특정 위치에서 분할한 후, 잘라낸 앞부분을 리스트의 끝에 다시 붙여야 하는 경우가 종종 있습니다. 이럴 때는 리스트를 순회하면서 슬라이싱(slicing) 기법을 활용하면 간단하게 해결할 수 있습니다.
파이썬의 리스트는 정수, 실수, 문자열 등 서로 다른 자료형의 값을 하나의 배열에 함께 저장할 수 있는 유연한 자료구조입니다.
아래 예제를 통해 실제 동작 과정을 살펴보겠습니다.
예제 코드
def split_list(my_list, n_val, k_val):
for i in range(0, k_val):
first_val = my_list[0]
for k in range(0, n_val-1):
my_list[k] = my_list[k + 1]
my_list[n_val-1] = first_val
my_list = [34, 42, 56, 78, 9, 0, 23]
list_len = len(my_list)
pos = 3
print("리스트 원본 :")
print(my_list)
print("split_list 메서드를 호출합니다")
split_list(my_list, list_len, pos)
for i in range(0, list_len):
print(my_list[i])실행 결과
리스트 원본 : [34, 42, 56, 78, 9, 0, 23] split_list 메서드를 호출합니다 78 9 0 23 34 42 56
코드 설명
- split_list 함수 정의: 리스트와 두 개의 값(리스트 길이, 분할 위치)을 매개변수로 받는 함수를 선언합니다.
- 인덱싱을 통한 분할: 단순 인덱싱을 활용해 리스트 요소들을 한 칸씩 앞으로 이동시키고, 맨 앞의 값을 리스트의 마지막에 배치합니다.
- 리스트 생성 및 출력: 예제용 리스트를 만들고 화면에 출력하여 원본 상태를 확인합니다.
- 함수 호출: 리스트와 분할 위치(pos = 3)를 인자로 전달하며 함수를 실행합니다.
- 결과 확인: 변환된 리스트가 콘솔에 순서대로 출력됩니다.
참고: 더 간결한 슬라이싱 방법
위 코드는 반복문을 사용하지만, 파이썬의 슬라이싱을 이용하면 한 줄로도 같은 결과를 얻을 수 있습니다.
my_list = [34, 42, 56, 78, 9, 0, 23] pos = 3 result = my_list[pos:] + my_list[:pos] print(result) # [78, 9, 0, 23, 34, 42, 56]
슬라이싱 방식은 새로운 리스트를 반환하기 때문에 원본 리스트를 유지하고 싶은 경우에도 유용하게 사용할 수 있습니다.