데이터 분석 작업을 하다 보면 일반 리스트의 각 요소를 개별적인 서브리스트(하위 리스트)로 변환해야 하는 상황을 자주 마주하게 됩니다. 예를 들어 ['Mon', 'Tue', 'Wed']와 같은 평범한 리스트를 [['Mon'], ['Tue'], ['Wed']]처럼 각 요소가 하나의 리스트가 된 형태로 바꾸는 것이죠.
이 글에서는 파이썬에서 일반 리스트를 리스트의 리스트(list of lists)로 변환하는 대표적인 세 가지 방법을 소개합니다.
1. 리스트 컴프리헨션(List Comprehension) 활용
가장 직관적이고 파이썬다운 방법입니다. 반복문을 통해 원본 리스트의 각 요소를 하나씩 읽어 들인 뒤, 각 요소를 리스트 형태로 감싸 새로운 리스트에 저장합니다.
예제 코드
Alist = ['Mon','Tue','Wed','Thu','Fri']
# 주어진 리스트
print("Given list: ", Alist)
# 각 요소를 리스트로 변환
NewList = [[x] for x in Alist]
# 결과 출력
print("The new lists of lists: ", NewList)실행 결과
Given list: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri'] The new lists of lists: [['Mon'], ['Tue'], ['Wed'], ['Thu'], ['Fri']]
리스트 컴프리헨션은 코드가 짧고 가독성이 뛰어나기 때문에 대부분의 경우 이 방법을 가장 권장합니다.
2. split() 함수 활용
이 방법은 문자열의 split() 함수를 이용해 콤마(,)로 구분된 각 요소를 추출하고, 추출된 결과를 리스트 형태로 새로운 리스트에 계속 추가(append)하는 방식입니다.
예제 코드
Alist = ['Mon','Tue','Wed','Thu','Fri']
# 주어진 리스트
print("Given list: ", Alist)
NewList = []
# split 사용
for x in Alist:
x = x.split(',')
NewList.append(x)
# 결과 출력
print("The new lists of lists: ", NewList)실행 결과
Given list: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri'] The new lists of lists: [['Mon'], ['Tue'], ['Wed'], ['Thu'], ['Fri']]
다만 이 방법은 요소가 문자열일 때만 동작한다는 점에 유의해야 합니다. 숫자 등 다른 자료형이 포함된 리스트에는 적합하지 않습니다.
3. map() 함수 활용
map() 함수는 시퀀스의 모든 요소에 동일한 함수를 반복적으로 적용할 때 유용합니다. 여기서는 람다(lambda) 함수를 사용해 원본 리스트의 각 요소를 리스트로 감싼 뒤, 그 결과를 다시 리스트로 변환합니다.
예제 코드
Alist = ['Mon','Tue','Wed','Thu','Fri']
# 주어진 리스트
print("Given list: ", Alist)
# map 사용
NewList = list(map(lambda x: [x], Alist))
# 결과 출력
print("The new lists of lists: ", NewList)실행 결과
Given list: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri'] The new lists of lists: [['Mon'], ['Tue'], ['Wed'], ['Thu'], ['Fri']]
정리
세 가지 방법 모두 동일한 결과를 만들어냅니다. 실무에서는 코드가 간결하고 읽기 쉬운 리스트 컴프리헨션이 가장 널리 사용되며, 함수형 프로그래밍 스타일을 선호한다면 map() 방식도 좋은 선택이 될 수 있습니다. 데이터의 자료형과 상황에 맞는 방법을 골라 사용하시면 됩니다.