Python 프로그래밍을 하다 보면 하나의 리스트를 각 요소가 개별 리스트로 구성된 ‘리스트의 리스트(list of lists)’ 구조로 변환해야 하는 경우가 종종 있습니다. 이때 단계 값(step value)을 기준으로 데이터를 나누어 저장하면 이후 데이터 가공이나 그룹화 작업이 훨씬 수월해집니다.
이 글에서는 간단한 반복문과 문자열의 split() 메서드, 그리고 append() 메서드를 활용하여 리스트를 리스트의 리스트로 변환하는 방법을 알아보겠습니다.
예제 코드
아래는 실제 동작을 확인할 수 있는 전체 예제입니다.
def convert_my_list(my_list):
my_result = []
for el in my_list:
sub = el.split(', ')
my_result.append(sub)
return(my_result)
my_list = ['peter', 'king', 'charlie']
print("The list is :")
print(my_list)
print("The resultant list is :")
print(convert_my_list(my_list))실행 결과
The list is : ['peter', 'king', 'charlie'] The resultant list is : [['peter'], ['king'], ['charlie']]
코드 설명
함수 정의:
convert_my_list라는 이름의 함수를 정의합니다.매개변수: 이 함수는 리스트 하나를 매개변수로 받습니다.
빈 리스트 생성: 함수 내부에는 결과를 담을 빈 리스트
my_result가 선언됩니다.반복 처리: 입력받은 리스트를 순회하면서 각 요소를 쉼표(
,)를 기준으로split() 메서드로 분할합니다.결과 추가: 분할된 결과(부분 리스트)를 빈 리스트에
append()> 메서드로 추가합니다.결과 반환: 모든 요소의 처리가 끝나면 완성된 리스트의 리스트를 반환합니다.
함수 호출: 함수 외부에서 샘플 리스트를 정의하고 콘솔에 출력한 뒤, 해당 리스트를 인자로 넘겨 함수를 호출합니다.
출력 확인: 최종 변환 결과가 콘솔에 출력됩니다.
참고: 리스트 컴프리헨션으로 더 간결하게
위 코드는 리스트 컴프리헨션(list comprehension)을 사용하면 한 줄로도 표현할 수 있습니다.
my_list = ['peter', 'king', 'charlie']
result = [el.split(', ') for el in my_list]
print(result) # [['peter'], ['king'], ['charlie']]이처럼 반복문 대신 컴프리헨션을 활용하면 코드가 더욱 간결하고 Python스럽게(Pythonic) 다듬어집니다. 상황에 맞게 두 방식 중 가독성이 좋은 쪽을 선택해 사용하시면 됩니다.